What is happening here? For some reason the server stops responding whenever I run the command.

Discussion in 'Plugin Development' started by jstN0body, Apr 15, 2020.

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

    jstN0body

    Code:
    package me.jstN0body.speedrunnervshunter.commands;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    
    import me.jstN0body.speedrunnervshunter.Main;
    
    public class SpeedRunnerVsHunter implements CommandExecutor {
       
        @SuppressWarnings("unused")
        private Main plugin;
       
        public SpeedRunnerVsHunter(Main plugin) {
            this.plugin = plugin;
           
            Bukkit.getPluginCommand("runnervshunter").setExecutor(this);
        }
       
        public static boolean enabled;
        public String[] commandArgs;
        public CommandSender cmdSender;
        public static Player speedrunner;
        public static Player hunter;
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String alias, String[] args) {
           
            if (args[0].equalsIgnoreCase("enable")) {
                enabled = true;
            } else if (args[0].equalsIgnoreCase("disable")){
                enabled = false;
            }
           
            if (enabled) {   
                commandArgs = args;
                cmdSender = sender;
                setCompassTarget();
                return true;
            }
            return true;
        }
       
        public void setCompassTarget() {
            speedrunner = cmdSender.getServer().getPlayer(commandArgs[1]);
            hunter = cmdSender.getServer().getPlayer(commandArgs[2]);
           
            if (enabled) {
                Bukkit.broadcastMessage("Hunter is " + hunter + ", and Speedrunner is " + speedrunner + ".");
                Bukkit.broadcastMessage("Setting compass target...");
            } else {
                Bukkit.broadcastMessage("Disabling...");
                hunter.setCompassTarget(hunter.getBedLocation());
            }
           
            while (enabled) {
                hunter.setCompassTarget(speedrunner.getLocation());
            }
           
        }
    
    }
     
  2. Offline

    bowlerguy66

    While loops crash the server. I'd recommend using a BukkitRunnable
     
Thread Status:
Not open for further replies.

Share This Page