public static boolean join(Player player, String arena, BowSpleef plugin)
	{
		if (player.hasPermission("bs.join"))
		{
			if (BowSpleef.arenaConfig.contains("arenas." + arena))
			{
				if (BowSpleef.arenaConfig.getBoolean("arenas." + arena + ".enabled"))
				{
					if (!BowSpleef.arenaConfig.getBoolean("arenas." + arena + ".inGame"))
					{
						if (!BowSpleef.invConfig.contains(player.getName()))
						{
							List<String> players = BowSpleef.arenaConfig.getStringList("arenas." + arena + ".players");
							int max = BowSpleef.arenaConfig.getInt("arenas." + arena + ".max-players");
							if (players.size() == max)
							{
								Methods.pm("That arena is already full!", player);
							}
							if (players.size() >= Math.round(max * .66))
							{
								// Start the Arena

								BowSpleefCountdownEvent event = new BowSpleefCountdownEvent(arena);

								Bukkit.getServer().getPluginManager().callEvent(event);

								new Countdown(event.getArena()).runTaskTimer(plugin, 0L, 20L);

								BowSpleef.arenaConfig.set("arenas." + arena + ".inGame", true);

								plugin.saveConfig();

							}
							// Storage for Return GM
							int gm = player.getGameMode().getValue();

							BowSpleef.invConfig.set(player.getName() + ".return.gamemode", gm);
							// Storage for Returning to Pos
							Location returnPos = player.getLocation();
							BowSpleef.invConfig.set(player.getName() + ".return.x", returnPos.getBlockX());
							BowSpleef.invConfig.set(player.getName() + ".return.y", returnPos.getBlockY());
							BowSpleef.invConfig.set(player.getName() + ".return.z", returnPos.getBlockZ());
							BowSpleef.invConfig.set(player.getName() + ".return.world", returnPos.getWorld().getName());

							Inventory storage = InventoryUtil.getArmorInventory(player.getInventory());
							Inventory GlobalInv = InventoryUtil.getContentInventory(player.getInventory());
							BowSpleef.invConfig.set(player.getName() + ".inventory", InventoryUtil.toBase64(GlobalInv));
							BowSpleef.invConfig.set(player.getName() + ".armor", InventoryUtil.toBase64(storage));

							// Inventory Storage
							String inv = InventoryUtil.toBase64(player.getInventory());

							Inventory armorInv = InventoryUtil.getArmorInventory(player.getInventory());

							String armor = InventoryUtil.toBase64(armorInv);

							BowSpleef.invConfig.set(player.getName() + ".armor", armor);
							BowSpleef.invConfig.set(player.getName() + ".inventory", inv);
							BowSpleef.invConfig.set(player.getName() + ".arena", arena);
							// Clearing Inventory
							player.getInventory().clear();
							player.getInventory().setHelmet(null);
							player.getInventory().setChestplate(null);
							player.getInventory().setLeggings(null);
							player.getInventory().setBoots(null);

							// Teleporting to the Lobby
							World world = Bukkit.getServer().getWorld(BowSpleef.arenaConfig.getString("arenas." + arena + ".world"));
							int x = BowSpleef.arenaConfig.getInt("arenas." + arena + ".lobby.x"), y = BowSpleef.arenaConfig.getInt("arenas." + arena + ".lobby.y"), z = BowSpleef.arenaConfig.getInt("arenas." + arena + ".lobby.z");
							Location lobby = new Location(world, x, y, z);
							player.teleport(lobby);
							// Setting them to Adventure Time
							player.setGameMode(GameMode.ADVENTURE);
							// Event
							BowSpleefJoinEvent event = new BowSpleefJoinEvent(player, arena);
							Bukkit.getServer().getPluginManager().callEvent(event);

							players.add(player.getName());
							BowSpleef.arenaConfig.set("arenas." + arena + ".players", players);
							if (players.size() == Math.round((BowSpleef.arenaConfig.getInt("arenas." + arena + ".max-players") * 2) / 3))
							{
								BowSpleefJoinEvent eventS = new BowSpleefJoinEvent(player, arena);
								Bukkit.getServer().getPluginManager().callEvent(eventS);
							}
							for (int p = 0; p < players.size(); p++)
							{
								Methods.pm(player.getName() + " joined the arena!" + " " + players.size() + "/" + max, Bukkit.getPlayer(players.get(p)));
							}
							plugin.saveConfig();
							return true;
						}
						pm("You are already in an arena!", player);
						return true;
					}

					pm("That arena is in game!", player);
					return true;
				}
				pm("That arena is Disabled", player);
				return true;
			}
			pm("That Arena doesn't Exist!", player);
			return true;
		}
		pm("You do not have the required permissions!", player);
		return true;
	}