Skip to content

Commit

Permalink
docs: restore website content
Browse files Browse the repository at this point in the history
  • Loading branch information
Bricklou committed Jun 20, 2024
1 parent 3533c14 commit 7b5320f
Show file tree
Hide file tree
Showing 39 changed files with 406 additions and 5,236 deletions.
81 changes: 30 additions & 51 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,68 +23,47 @@ concurrency:
group: "pages"
cancel-in-progress: true

env:
NEXT_PUBLIC_BASE_PATH: /launcher-tutorials
# Default to bash
defaults:
run:
shell: bash

jobs:
# Build job
build:
runs-on: ubuntu-latest
env:
HUGO_VERSION: 0.127.0
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Detect package manager
id: detect-package-manager
run: |
if [ -f "${{ github.workspace }}/yarn.lock" ]; then
echo "manager=yarn" >> $GITHUB_OUTPUT
echo "command=install" >> $GITHUB_OUTPUT
echo "runner=yarn" >> $GITHUB_OUTPUT
exit 0
elif [ -f "${{ github.workspace }}/package.json" ]; then
echo "manager=npm" >> $GITHUB_OUTPUT
echo "command=ci" >> $GITHUB_OUTPUT
echo "runner=npx --no-install" >> $GITHUB_OUTPUT
exit 0
else
echo "Unable to determine packager manager"
exit 1
fi
- name: Setup Node
uses: actions/setup-node@v3
fetch-depth: 0 # fetch all history for .GitInfo and .Lastmod
submodules: recursive
- name: Setup Go
uses: actions/setup-go@v5
with:
node-version: "16"
cache: ${{ steps.detect-package-manager.outputs.manager }}
go-version: "1.22"
- name: Setup Pages
uses: actions/configure-pages@v3
with:
# Automatically inject basePath in your Next.js configuration file and disable
# server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized).
#
# You may remove this line if you want to manage the configuration yourself.
static_site_generator: next
- name: Restore cache
uses: actions/cache@v3
with:
path: |
.next/cache
# Generate a new cache whenever packages or source files change.
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
# If source files changed but packages didn't, rebuild from a prior cache.
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-
- name: Install dependencies
run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
- name: Build with Next.js
run: ${{ steps.detect-package-manager.outputs.runner }} next build
- name: Static HTML export with Next.js
run: ${{ steps.detect-package-manager.outputs.runner }} next export
id: pages
uses: actions/configure-pages@v5
- name: Setup Hugo
run: |
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
- name: Build with Hugo
env:
# For maximum backward compatibility with Hugo modules
HUGO_ENVIRONMENT: production
HUGO_ENV: production
run: |
hugo \
--gc --minify \
--baseURL "${{ steps.pages.outputs.base_url }}/"
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
uses: actions/upload-pages-artifact@v3
with:
path: ./out
path: ./public

# Deployment job
deploy:
Expand All @@ -96,4 +75,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
uses: actions/deploy-pages@v4
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
.vscode/
.idea/
.idea/

public/
resources/_gen/
28 changes: 23 additions & 5 deletions content/_index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
+++
title = ''
date = 2024-06-20T10:41:31+02:00
draft = true
+++
---
title: "Introduction"
date: 2024-06-20T10:41:31+02:00
cascade:
type: docs
---

Bienvenue sur Launcher Tutorials ! Différents tutoriels sont répertoriés autour de la création de launcher Minecraft.

<!-- more -->

## Pourquoi ce site ?

Ce site a été créé pour aider les personnes qui souhaitent créer un launcher Minecraft. Il est composé de tutoriels qui vous permettront de créer un launcher Minecraft de A à Z. Il existe en complément un [Discord](https://discord.gg/SAy4bVQgHD) où vous pourrez poser vos questions et obtenir de l'aide.

## Comment contribuer ?

Vous pouvez contribuer à ce site en proposant des tutoriels ou en corrigeant des erreurs. Pour cela, vous pouvez créer une
[Pull Request](https://github.com/bricklou/launcher-tutorials/pulls) sur le dépôt GitHub du site.

## Contributeurs

[![](https://contrib.rocks/image?repo=bricklou/launcher-tutorials)](https://github.com/bricklou/launcher-tutorials/graphs/contributors)
5 changes: 0 additions & 5 deletions content/docs/_index.md

This file was deleted.

13 changes: 13 additions & 0 deletions content/faq.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
title: "FAQ"
date: 2024-06-20T11:36:46+02:00
weight: 1
---

Tu trouveras ici les réponses aux questions les plus fréquentes.
Si tu as une question qui n'est pas dans cette liste, n'hésite pas à nous la proposer sur [GitHub](https://github.com/bricklou/launcher-tutorials/issues/new).

{{< callout type="warning" emoji="⚠️" >}}
Cette page est un peu vide pour le moment, mais elle va s'étoffer au fur et à
mesure que nous recevrons des questions.
{{< /callout >}}
20 changes: 20 additions & 0 deletions content/flow-updater/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
title: "Flow Updater"
date: 2024-06-20T11:36:46+02:00
weight: 3
---

_"The free and open source solution to update Minecraft."_

## Introduction

**Flow Updater** est aujourd'hui un outil indispensable pour mettre à jour une installation Minecraft.
Créé par [Flow Arg](https://github.com/FlowArg) en 2020, FlowUpdater bénéficie aujourd'hui d'une communauté prête à vous aider en cas de problème.
La bibliothèque est disponible à partir de Java 8 et est compatible à ce jour jusqu'à Java 19.

[Ce projet open-source](https://github.com/FlowArg/FlowUpdater) permet d'installer en plus d'une version vanilla, un mod loader (Forge, Fabric, ...) des mods en provenance de plusieurs plateformes (CurseForge, Modrinth, votre propre serveur) et même un mod pack complet !
Il est également possible d'ajouter des resource packs, des options par défaut, etc...

Vous pouvez contribuez à ce projet en proposant des idées sur le [Discord](https://discord.gg/dN6HWHp), en ouvrant directement une [issue](https://github.com/FlowArg/FlowUpdater/issues) pour signaler un bug ou en créant une [Pull Request](https://github.com/FlowArg/FlowUpdater/pulls) pour proposer des modifications dans le code.

Sur cette documentation, vous retrouverez des tutoriels à jour sur l'utilisation de la bibliothèque (si ils sont dépassés, n'hésitez pas à nous le signaler !) pour vous aider à mettre en place Flow Updater dans votre projet.
8 changes: 8 additions & 0 deletions content/flow-updater/vanilla.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: "Vanilla"
date: 2024-06-20T11:36:46+02:00
---

## Tutoriel Vanilla

W.I.P
145 changes: 145 additions & 0 deletions content/open-auth.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
---
title: "Open Auth"
date: 2024-06-20T11:36:46+02:00
weight: 2
---

## Introduction

[Open Auth](https://github.com/litarvan/openauth) est une librairie Java développée par [Litarvan](https://github.com/litarvan) qui offre une méthode rapide pour s'authentifier via les services officiels pour un client Minecraft.
Dans cet article, nous parlerons exclusivement de l'authentification (cité sous le nom "d'auth" à partir de maintenant) par un compte Microsoft. En effet, désormais Mojang supporte uniquement cette méthode.

## Importer la librairie

Cette librairie est hébergée sur le maven de Litarvan, vous pouvez donc l'importer dans votre projet comme ceci :

Avec Gradle :

```groovy {filename=build.gradle}
repositories {
mavenCentral()
maven {
url = 'https://jitpack.io'
name = 'JitPack'
}
}
dependencies {
implementation 'com.github.litarvan:openauth:518589d222'
}
```

Avec Maven :

```xml {filename=pom.xml}
<repositories>
<repository>
<id>JitPack</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.litarvan</groupId>
<artifactId>openauth</artifactId>
<version>518589d222</version>
</dependency>
</dependencies>
```

{{< callout emoji="✅" type="info" >}}
À l'heure où est écrit ce tutoriel, la dernière version disponible est la
**1.1.5** (qui est le commit `518589d222`, puisque cette version n'a pas été publié). Allez sur la page des
[releases](https://github.com/Litarvan/OpenAuth/releases) pour voir la
dernière version disponible.
{{< /callout >}}

## Authentification

Plusieurs méthodes d'auth sont disponibles en fonction des besoins de l'application que vous développez.

{{< callout emoji="⚠️" type="warning" >}}
Il faut choisir **une seule** méthode d'auth parmi les suivantes.
{{< /callout >}}

Pour toutes les méthodes d'auth suivantes, il faut déclarer un objet de type `MicrosoftAuthenticator` comme ceci :

```java
MicrosoftAuthenticator authenticator = new MicrosoftAuthenticator();
```

### Auth par "Credentials":

Cette méthode permet de se connecter avec l'email et le mot de passe du compte Microsoft, elle peut être utile dans le cas ou l'application intègre ses propres champs de texte pour la connexion.
Nonobstant, cette méthode est déconseillée car elle n'est pas sécurisée, et peut être utilisée pour récupérer des informations sensibles par l'application (puisqu'elle traîte directement les informations de connexion). De plus, cette méthode ne supporte pas la double authentification "A2F".
Voici comment l'utiliser :

```java
// ...
MicrosoftAuthResult result = authenticator.loginWithCredentials("email", "password");
```

### Auth par "WebView":

Cette méthode permet de se connecter avec une interface de connexion Microsoft, comme ceci :

![Image de la webview Microsoft](https://sharepointmaven.com/wp-content/uploads/2022/09/brandloginwindowmicrosoft3651.jpg)

Voici comment l'utiliser :

```java
...
MicrosoftAuthResult result = authenticator.loginWithWebView();
```

{{< callout emoji="✅" type="info" >}}
Attention, cette méthode n'est pas une méthode asynchrone, c'est a dire que
votre programme ne tournera plus en arrière plan lorsque cette fenêtre sera
ouverte si elle n'est pas ouverte dans un autre thread. Cela peut causer des
problèmes, par exemple : votre interface graphique pourra être gelée et vous
aurez un beau message de votre OS vous informant que le programme ne répond
plus.
{{< /callout >}}

Si vous voulez utiliser la méthode asynchrone, utilisez simplement `loginWithAsyncWebView` au lieu de `loginWithWebView`;

### Auth par "RefreshToken:

Cette méthode d'auth permet de se connecter avec un _refresh_token_, elle est utilisée pour éviter de se reconnecter à chaque lancement.
Le _refresh_token_ est récupérable avec une authentification basique, sauvegardez le dans un fichier pour le récupérer au prochain lancement.
Voici comment l'utiliser :

```java
// ...
MicrosoftAuthResult result = authenticator.loginWithRefreshToken("refresh token");
```

### Auth par "DeviceId"

_Cette auth est en cours d'écriture, elle permettrait de ne pas utiliser la webView et d'ouvrir une page internet pour taper un code, comme il est fait dans le launcher de multiMc_

## Résultat

Pour toutes ces méthodes d'auth, nous obtenons un objet result de type `MicrosoftAuthResult`. Cet objet nous permet de récupérer plusieurs informations sur le compte que nous venons de connecter :

- le profil avec la méthode `result.getProfile()`
- l'accesToken avec la méthode `result.getAccessToken()`
- le refreshToken avec la méthode `result.getRefreshToken()`
- l'xuid avec la méthode `result.getXuid()`
- le clientId avec la méthode `result.getClientId()`

Les deux derniers ids sont nécessaires notamment pour les authentifications à partir de la 1.18.

### Le profil

La méthode `result.getProfile()` retourne uen objet de type `MinecraftProfile`, qui peut être utilisé avec les méthodes suivantes :

- `getId()` permets de récupérer l'UUID du compte minecraft
- `getName()` permets de récupérer le nom du compte du joueur
- `getSkins()` permets de récupérer la liste des skins du joueur sous forme de MinecraftSkin[] (je ne détaillerais pas ici l'utilisation de cette classe que vous pouvez trouver [ici](https://github.com/Litarvan/OpenAuth/blob/518589d22210bf0763d9ae19d546ddf1dba3fb8c/src/main/java/fr/litarvan/openauth/microsoft/model/response/MinecraftProfile.java#L60))

### Les tokens

- L'_acces token_ est utilisé pour lancer le jeu, par exemple avec la librairie [OpenLauncherLib](https://github.com/FlowArg/OpenLauncherLib)
- Le _refresh token_, dont nous avons déjà parlé avant, permet quant à lui de se reconnecter directement, sans avoir à rentrer de mot de passe, il est donc pratique de le sauvegarder dans un fichier après la connexion.
File renamed without changes.
22 changes: 22 additions & 0 deletions content/swing-launcher/getting-started.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
title: "Documentation de SwingLauncher"
linkTitle: "Getting started"
date: 2024-06-20T11:36:46+02:00
---

Ici, vous allez trouver des informations concernant le code du swing template.

## Avant de commencer

S'il vous plait, ayez une bonne connaissance de votre sujet (java, swing) pour ne pas être perdu dans votre projet.

## Installation

- Pour créer votre launcher en utilisant le [repo github](https://github.com/support-launcher/swinglauncher), clonez-le via git sur votre ordinateur.
- Ouvrez le projet avec l'ide que vous souhaitez (Intellij IDEA est fortement recommandé).

À présent vous êtes prêt à coder votre launcher !

{{< callout type="warning" emoji="⚠️" >}}
Faites attention à ouvrir le bon dossier !
{{< /callout >}}
38 changes: 38 additions & 0 deletions content/swing-launcher/launcher.java.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
title: "Main.java"
date: 2024-06-20T11:36:46+02:00
---

{{< callout type="information" emoji="❤" >}}
noFramework est maintenant utilisé pour le lancement du jeu !
{{< /callout >}}

Cette classe permet de lancer un client minecraft en utilisant FlowUpdater. Vous pouvez trouver plus d'informations à ce propos ici: [FlowUpdater](../../flow-updater)

## Launch function

```java
public static void launch() {
try {
NoFramework noFramework = new NoFramework(
gameDir,
authInfos,
GameFolder.FLOW_UPDATER
);
noFramework.getAdditionalVmArgs().add("-Xms1G");
noFramework.getAdditionalVmArgs().add("-Xmx" + getSaver().get("ram") + "G");

Process p = noFramework.launch("1.8.8", "", NoFramework.ModLoader.VANILLA);
} catch (Exception e) {
logger.printStackTrace(e);
}
}
```

### Vm arguments

Avec `"noFramework.getAdditionalVmArgs().add("eheh i'm a Vm argument");`, vous pouvez ajouter un argument à la jvm, mais vous n'avez pas enormément de possibilité d'utilisation pour un client minecraft. Généralement, vous allez l'utiliser pour argument concernant l'allocation en mémoire.

### Launch Process

Le lancement est un process, donc vous pouvez obtenir certaines informations, comme par exemple de savoir s'il est toujours fonctionnel. [Plus d'informations](https://docs.oracle.com/javase/8/docs/api/java/lang/Process.html)
Loading

0 comments on commit 7b5320f

Please sign in to comment.