@Override
	public void onEnable() {

		plugin = this;

		getLogger()
				.info("[W&P] Warp and Port has been " + ChatColor.GREEN
						+ " Enabled!");
		// Tell the console this on enable^

		getCommand("warp").setExecutor(warp);
		getCommand("wnp").setExecutor(wnp);
		getCommand("home").setExecutor(homeExec);
		getCommand("sethome").setExecutor(homeExec);
		getCommand("tp").setExecutor(tpExec);
		getCommand("tphere").setExecutor(tpExec);
		getCommand("tpall").setExecutor(tpExec);
		getCommand("spawn").setExecutor(sc);
		/*
		 * Register the commands from each of their class fields warp is an
		 * object of Warp.java wnp is an object of WnP.java
		 */

		pm.registerEvents(warpSign, this);
		pm.registerEvents(portSign, this);
		pm.registerEvents(jl, this);
		pm.registerEvents(rl, this);
		/*
		 * Registers our listeners from WarpSigns.java and PortSigns.java Again
		 * these are objects of those classes
		 */
		warpsFile = new File(getDataFolder(), "Warps.yml");
		warps = new YamlConfiguration();

		portsFile = new File(getDataFolder(), "Ports.yml");
		ports = new YamlConfiguration();

		playersFile = new File(getDataFolder(), "Players.yml");
		players = new YamlConfiguration();

		/*
		 * ^^^These are creating the file location and the configuration of the
		 * files.
		 */

		getConfig().options().copyDefaults(true);
		// ^^Receive the Config

		if (!this.getConfig().isSet("Warps.WarpName")) {
			this.getConfig().set("Warps.WarpName", "Warp");
		}
		if (!this.getConfig().isSet("Spawn.delay")) {
			this.getConfig().set("Spawn.delay", 5);
		}
		if (!this.getConfig().isSet("Ports.PortName")) {
			this.getConfig().set("Ports.PortName", "Port");
		}
		if (!this.getConfig().isSet("Warps.WarpColor")) {
			this.getConfig().set("Warps.WarpColor", "&b");
		}
		if (!this.getConfig().isSet("Ports.PortColor")) {
			this.getConfig().set("Ports.PortColor", "&d");
		}
		if (!this.getConfig().isSet("Warps.WarpDelaySeconds")) {
			this.getConfig().set("Warps.WarpDelaySeconds", 5);
		}
		if (!this.getConfig().isSet("Homes.HomeDelaySeconds")) {
			this.getConfig().set("Homes.HomeDelaySeconds", 5);
		}
		if (!this.getConfig().isSet("Teleports.TpDelaySeconds")) {
			this.getConfig().set("Teleports.TpDelaySeconds", 5);
		}
		// ^^^^These are all to add these paths to the config.yml if they do not
		// already exist

		saveConfig();
		// ^^^ Save the config
		try {
			firstPlayerRun();
			// Try to do the method firstPlayerRun()
		} catch (Exception e) {
			e.printStackTrace();
			// If there is an error with firstPlayerRun print it to the console
			return;
		}

		loadPlayers();
		// Try to run the loadPlayers() method

		try {
			firstWarpRun();
			// Run the method firstWarpRun()
		} catch (Exception e) {
			e.printStackTrace();
			// If there is a problem with firstWarpRun() print it to the console
			return;
		}

		loadWarps();

		try {
			firstPortRun();
			// Try to run the firstPortRun() method
		} catch (Exception e) {
			e.printStackTrace();
			// If there is a problem with firstPortRun() print it to the console
			return;
		}

		loadPorts();
		saveWarps();
		savePlayers();
		savePorts();
		// ^^ These are quite self-explanatory
	}