@Override
	public void onDisable() {

		// Save config
		config.save();
		
		// Perform a Save NOW!
		performSave();

		// Enable built-in world saving for ASynchronous Mode
		if (config.varMode == Mode.ASYNCHRONOUS) {
			for (World world : getServer().getWorlds()) {
				if(bukkitHasSetAutoSave) {
					world.setAutoSave(true);
				} else {
					// this should be false because canSave is really noSave
					((CraftWorld) world).getHandle().savingDisabled = false;
				}
			}
		}

		long timeA = 0;
		if (config.varDebug) {
			timeA = System.currentTimeMillis();
		}
		// Stop thread
		if (config.varDebug) {
			log.info(String.format("[%s] Stopping Save Thread",
					getDescription().getName()));
		}
		stopThread(ThreadType.SAVE);
		stopThread(ThreadType.REPORT);

		if (config.varDebug) {
			long timeB = System.currentTimeMillis();
			long millis = timeB - timeA;
			long durationSeconds = TimeUnit.MILLISECONDS.toSeconds(millis);

			log.info(String.format(
					"[%s] Version %s was disabled in %d seconds",
					getDescription().getName(), getDescription().getVersion(),
					durationSeconds));
		} else {
			log.info(String.format("[%s] Version %s is disabled!",
					getDescription().getName(), getDescription().getVersion()));
		}
	}