private void addClassPath(final URL url) throws IOException {
   final URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();
   final Class<URLClassLoader> sysclass = URLClassLoader.class;
   try {
     final Method method = sysclass.getDeclaredMethod("addURL", new Class[] {URL.class});
     method.setAccessible(true);
     method.invoke(sysloader, new Object[] {url});
   } catch (final Throwable t) {
     t.printStackTrace();
     throw new IOException("Error adding " + url + " to system classloader");
   }
 }
 public boolean isMineshafterPresent() {
   try {
     Class.forName("mineshafter.MineServer");
     return true;
   } catch (Exception e) {
     return false;
   }
 }
  @SuppressWarnings("rawtypes")
  public Class getMinecraftServerClass(String classname) {
    try {
      if (this.minecraft == null) {
        this.minecraft = this.getMinecraftPackage();
      }

      return Class.forName(this.minecraft.getName() + "." + classname);
    } catch (Exception ex) {
      this.getServer()
          .getConsoleSender()
          .sendMessage(
              ChatWriter.pluginMessage(
                  ChatColor.RED
                      + Main._l(
                          "errors.classnotfound",
                          ImmutableMap.of("package", "minecraft server", "class", classname))));
      return null;
    }
  }
  public Class<?> getVersionRelatedClass(String className) {
    try {
      Class<?> clazz =
          Class.forName(
              "io.github.yannici.bedwars.Com." + this.getCurrentVersion() + "." + className);
      return clazz;
    } catch (Exception ex) {
      this.getServer()
          .getConsoleSender()
          .sendMessage(
              ChatWriter.pluginMessage(
                  ChatColor.RED
                      + "Couldn't find version related class io.github.yannici.bedwars.Com."
                      + this.getCurrentVersion()
                      + "."
                      + className));
    }

    return null;
  }