title: Scanner nextLine() NoSuchElementException
body: <p>I've been programming a Bukkit plugin for a while now, and this one issue has me stumped. I'm trying to read a line from a file using a Scanner, and add everything on the line before ": " to a HashSet. Every time I try, I get a NoSuchElementException, looking like this:<br/><br/></p>
  
  <pre><code>21:01:01 [SEVERE] Could not pass event PlayerLoginEvent to ServerProtect
  org.bukkit.event.EventException
          at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
  va:341)
          at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
  a:62)
          at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
  ava:477)
          at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
  ava:462)
          at net.minecraft.server.ServerConfigurationManagerAbstract.attemptLogin(
  ServerConfigurationManagerAbstract.java:273)
          at net.minecraft.server.NetLoginHandler.d(NetLoginHandler.java:112)
          at net.minecraft.server.NetLoginHandler.c(NetLoginHandler.java:41)
          at net.minecraft.server.DedicatedServerConnectionThread.a(DedicatedServe
  rConnectionThread.java:44)
          at net.minecraft.server.DedicatedServerConnection.b(SourceFile:29)
          at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:578)
          at net.minecraft.server.DedicatedServer.q(DedicatedServer.java:213)
          at net.minecraft.server.MinecraftServer.p(MinecraftServer.java:474)
          at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:406)
          at net.minecraft.server.ThreadServerApplication.run(SourceFile:539)
  Caused by: java.util.NoSuchElementException: No line found
          at java.util.Scanner.nextLine(Unknown Source)
          at com.gmail.thecotlsdragon98.ServerProtect.AltAccounts.CheckForUsedIP(A
  ltAccounts.java:49)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
          at java.lang.reflect.Method.invoke(Unknown Source)
          at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
  va:339)
          ... 13 more
  </code></pre>
  
  <p>This is the class where I try to do what I explained above.</p>
  
  <pre><code>package com.gmail.thecotlsdragon98.ServerProtect;
  
  import java.io.File;
  import java.io.FileReader;
  import java.io.FileWriter;
  import java.io.IOException;
  import java.io.PrintWriter;
  import java.util.HashSet;
  import java.util.Scanner;
  import org.bukkit.ChatColor;
  import org.bukkit.entity.Player;
  import org.bukkit.event.EventHandler;
  import org.bukkit.event.Listener;
  import org.bukkit.event.player.PlayerLoginEvent;
  import org.bukkit.event.player.PlayerLoginEvent.Result;
  import org.bukkit.event.server.PluginDisableEvent;
  import org.bukkit.event.server.PluginEnableEvent;
  
  public class AltAccounts implements Listener
  {
      ServerProtect plugin;
      public AltAccounts(ServerProtect instance){
          plugin = instance;
      }
      File usersFile;
      FileWriter outputFile;
      PrintWriter out;
      Scanner in;
      HashSet&lt;String&gt; players = new HashSet&lt;String&gt;();
      StringBuffer buffer = new StringBuffer();
      @EventHandler
      public void newUsersFile(PluginEnableEvent event) throws IOException{
          if(event.getPlugin() == plugin){
              usersFile = new File("plugins\\ServerProtect\\users.yml");
              if(!usersFile.exists()){
                  usersFile.createNewFile();
              }
          }
      }
      @EventHandler
      public void CheckForUsedIP(PlayerLoginEvent event) throws IOException{
          outputFile = new FileWriter(usersFile, true);
          out = new PrintWriter(outputFile);
          in = new Scanner(new FileReader(usersFile));
          String[] nameandIP;
          String name;
          String IP;
          String line = in.nextLine();
          while(in.hasNextLine() &amp;&amp; !in.nextLine().isEmpty()){
              players.add(line.split(": ")[0]);
              if(!players.contains(event.getPlayer().getName())){
                  out.println(event.getPlayer().getName() + ": " + event.getAddress().getHostAddress());
                  out.close();
              }
          }
          if(!in.hasNextLine() || in.nextLine().isEmpty()){
              if(!players.contains(event.getPlayer().getName())){
                  out.println(event.getPlayer().getName() + ": " + event.getAddress().getHostAddress());
                  out.close();
                  players.clear();
              }
          }
          if(!plugin.getConfig().getBoolean("alts.kick-on-login")){
              while(in.hasNextLine()){
                  nameandIP = in.nextLine().split(": ");
                  name = nameandIP[0];
                  IP = nameandIP[1];
                  if(event.getAddress().getHostAddress().equals(IP) &amp;&amp; !event.getPlayer().getName().equals(name)){
                      for(final Player player : plugin.getServer().getOnlinePlayers()){
                          if(player.hasPermission("serverprotect.alts.notify")){
                              player.sendMessage(ChatColor.RED + event.getPlayer().getName() + " has the same IP as " + name + " (" + event.getAddress().getHostAddress() + ")");
                          }
                      }
                  }
              }
          }
          else if(plugin.getConfig().getBoolean("alts.kick-on-login")){
              while(in.hasNextLine()){
                  nameandIP = in.nextLine().split(": ");
                  name = nameandIP[0];
                  IP = nameandIP[1];
                  if(event.getAddress().getHostAddress().equalsIgnoreCase(IP)){
                      event.setKickMessage("The IP address you've logged in with is used. Alternate account?");
                      event.setResult(Result.KICK_OTHER);
                  }
              }
          }
      }
      public void Disable(PluginDisableEvent event)throws IOException{
          if(event.getPlugin() == plugin){
              in.close();
          }
      }
  }
  </code></pre>
  
  <p>I've been told that I'm calling in.nextLine() twice, and when I asked for advice on how to fix it he just ignored me. Any help is greatly appreciated.</p>