Skip to content

Commit

Permalink
Merge pull request #33 from feature/style-and-link-fix
Browse files Browse the repository at this point in the history
feat: tweak CSS, CI build for PRs and more resources
  • Loading branch information
is0ss authored Aug 16, 2023
2 parents b4e4f0b + 7be4519 commit 162a6b3
Show file tree
Hide file tree
Showing 15 changed files with 136 additions and 22 deletions.
67 changes: 67 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Build

on:
push:
pull_request:
branches:
- main
workflow_dispatch:

env:
NEXT_PUBLIC_BASE_PATH: /docs

jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
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
with:
node-version: "16"
cache: ${{ steps.detect-package-manager.outputs.manager }}
- 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
2 changes: 1 addition & 1 deletion src/components/youtube.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export function Youtube(props: YoutubeProps): JSX.Element {
allowFullScreen
frameBorder={0}
className={cn(
"nx-w-full nx-aspect-video nx-max-h-96 nx-mx-auto group-hover:nx-shadow-lg nx-rounded-xl",
"nx-w-full nx-aspect-video nx-max-w-screen-md 4xl:nx-max-w-screen-lg nx-mx-auto group-hover:nx-shadow-lg nx-rounded-xl",
"nx-border nx-bg-gray-100 dark:nx-border-neutral-700"
)}
></iframe>
Expand Down
12 changes: 7 additions & 5 deletions src/pages/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@ Archipel est un projet visant à implémenter un serveur Minecraft de manière p

Le projet est hébergé sur [Github](https://github.com/archipel-project). Il est composé de plusieurs dépôts :

* [Proxy](https://github.com/archipel-project/archipel-proxy)
* [Manager](https://github.com/archipel-project/archipel-manager)
* [Core](https://github.com/archipel-project/archipel-core)
* [Storage](https://github.com/archipel-project/archipel-storage)
* [Tools](https://github.com/archipel-project/archipel-tools)
* [Proxy](https://github.com/archipel-project/proxy)
* [Manager](https://github.com/archipel-project/manager)
* [Core](https://github.com/archipel-project/core)
* [Storage](https://github.com/archipel-project/storage)
* [Tools](https://github.com/archipel-project/tools)
* [Client](https://github.com/archipel-project/client): client de débug pour le projet
* [mc-packet-lib](https://github.com/archipel-project/mc-packet-lib)
* [Documentation](https://github.com/archipel-project/docs)
* [Dev blog](https://github.com/archipel-project/dev-blog)

Expand Down
4 changes: 3 additions & 1 deletion src/pages/resources/_meta.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
{
"rust": "Rust",
"worlds-gen": "Génération des mondes"
"world-gen": "Génération des mondes",
"storing-worlds": "Stockage des mondes",
"networking": "Réseau"
}
20 changes: 20 additions & 0 deletions src/pages/resources/networking.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Réseau

Les différentes version de Minecraft utilisent leur propre protocole réseau.
Il est donc nécessaire de comprendre comment fonctionne ce protocole pour pouvoir communiquer avec un serveur Minecraft.

## Protocoles

La version Java se sert d'un protocole se servant de TCP:
- https://wiki.vg/Protocol

Tandis que la version Bedrock se sert du protocole Raknet passant par UDP:
- https://wiki.vg/Bedrock_Protocol
- https://wiki.vg/Raknet_Protocol

## Exemple de code

Vous trouverez ci-dessous un projet d'exemple développé par Bricklou, permettant d'imiter le comportement d'un serveur Minecraft
quand un client lui demande des informations pour la page des serveurs multijoueurs.

* https://github.com/Bricklou/mc-fake-ping-server
6 changes: 6 additions & 0 deletions src/pages/resources/storing-worlds.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Stockage du mondes

Ci-dessous se trouve quelques ressources utiles pour comprendre le fonctionnement du stockage des mondes dans Minecraft:

* https://minecraft.fandom.com/wiki/NBT_format
* https://www.worldql.com/posts/2021-08-worldql-scalable-minecraft/
File renamed without changes.
2 changes: 1 addition & 1 deletion src/pages/specs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ import { GalleryVerticalEnd } from 'lucide-react'
/>
<Card
icon={<GalleryVerticalEnd />}
title="Blocs"
title="Blocks"
href="specs/blocks"
/>
</Cards>
Expand Down
2 changes: 1 addition & 1 deletion src/pages/specs/_meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
"technical-points": "Points techniques",
"nomenclature": "Nomenclature",
"chunks": "Chunks",
"blocks": "Blocs"
"blocks": "Blocks"
}
10 changes: 5 additions & 5 deletions src/pages/specs/blocks.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Blocs
# Blocks

- un bloc placé n’est qu'un entier sur 4 bytes (son id) dans un chunk
- plusieurs variations d'un bloc sont des blocs différents, il n'y a pas de système de metadata à part les tile entity
- les fonctions associés aux blocs (tick, update, on break, etc) sont toutes stockées dans un array, l'id du bloc devra être utilisée comme index pour récupérer ces fonctions
- il doit être possible de créer des blocs avec une plage d'id contiguë pour tester facilement si un bloc fait partie d'un groupe (s'il est compris dans la plage d'id), utile pour gérer des variations d'un block (redstone, piston, escalier, blocs waterlogged, etc)
- un block placé n’est qu'un entier sur 4 bytes (son id) dans un chunk
- plusieurs variations d'un block sont des blocks différents, il n'y a pas de système de metadata à part les tile entity
- les fonctions associés aux blocks (tick, update, on break, etc) sont toutes stockées dans un array, l'id du block devra être utilisée comme index pour récupérer ces fonctions
- il doit être possible de créer des blocks avec une plage d'id contiguë pour tester facilement si un block fait partie d'un groupe (s'il est compris dans la plage d'id), utile pour gérer des variations d'un block (redstone, piston, escalier, blocks waterlogged, etc)
10 changes: 5 additions & 5 deletions src/pages/specs/chunks.mdx
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Chunks

- Un chunk est une unité de 16×16×16 blocs, soit 4096 blocs au total, il contient:
- Un chunk est une unité de 16×16×16 blocks, soit 4096 blocks au total, il contient:
- ses propres coordonnées relatives dans le monde
- des flags (voir plus bas)
- les id des blocs qui le compose
- les id des blocks qui le compose
- un array de 2048 octets pour les données de lumière (soit 4 bits par niveau de lumière)
- la liste des (id) entités (+tileEntity ?) qui s'y trouvent.
- Il doit toujours avoir une taille statique en mémoire, cependant n'avoir aucune forme de compression serait une énorme perte d'espace (il y a beaucoup de chunks composés d'à peine une dizaine de blocs, voir que d'un bloc uniquement), afin de palier à ce problème, 2 implémentations d'un chunks :
- une version compressée avec une palette qui traduit les blocs sur 4 bits
- la représentation sur 4 bytes (cela permet de diviser par deux là taille d'un chunks en mémoire pour des id globaux d'un bloc sur 1 octet, par 4 si les blocs sont représentés sur 2 octets).
- Il doit toujours avoir une taille statique en mémoire, cependant n'avoir aucune forme de compression serait une énorme perte d'espace (il y a beaucoup de chunks composés d'à peine une dizaine de blocks, voir que d'un block uniquement), afin de palier à ce problème, 2 implémentations d'un chunks :
- une version compressée avec une palette qui traduit les blocks sur 4 bits
- la représentation sur 4 bytes (cela permet de diviser par deux là taille d'un chunks en mémoire pour des id globaux d'un block sur 1 octet, par 4 si les blocks sont représentés sur 2 octets).
- Un chunk dois porter en en-tête les flags suivant :
- est-ce un chunk null (un simple trou dans le vecteur de stockage qui peut être refill
- est-ce qu'il y a besoin d'appliquer du random-tick speed
Expand Down
2 changes: 1 addition & 1 deletion src/pages/specs/nomenclature.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Archive/dossier contenant l’ensemble des ressources nécessaires pour charger

## Modules

Fichier lua ou shared libs qui contiennent la logique du plugin (blocs, items, etc.)
Fichier lua ou shared libs qui contiennent la logique du plugin (blocks, items, etc.)

## Assets

Expand Down
5 changes: 5 additions & 0 deletions src/pages/specs/projects.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@ jeu de base au complet (overworld, nether, end).
Le manager sera là pour chapoter les différents services et garder une cohésion. C'est par le biais de ce dernier qu'il sera possible de gérer l'infrastructure du serveur.
(joueurs, mondes, nodes, backups, etc.)

### Client

Le client est un outil graphique que nous allons développer pour nous aider à analyser la stack réseau des serveurs Minecraft ainsi que des données qui transitent avec le client.
Cela nous permettra de mieux comprendre le fonctionnement du jeu et de pouvoir développer plus facilement la logique du jeu.

## Diagramme de relation des services

```mermaid
Expand Down
4 changes: 2 additions & 2 deletions src/theme/mdx-components.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -196,13 +196,13 @@ export const getComponents = ({
h6: (props) => <HeadingLink tag="h6" context={context} {...props} />,
ul: (props) => (
<ul
className="nx-mt-6 nx-list-disc first:nx-mt-0 ltr:nx-ml-6 rtl:nx-mr-6"
className="nx-list-container nx-list-disc first:nx-mt-0 ltr:nx-ml-6 rtl:nx-mr-6"
{...props}
/>
),
ol: (props) => (
<ol
className="nx-mt-6 nx-list-decimal first:nx-mt-0 ltr:nx-ml-6 rtl:nx-mr-6"
className="nx-list-container nx-list-decimal first:nx-mt-0 ltr:nx-ml-6 rtl:nx-mr-6"
{...props}
/>
),
Expand Down
12 changes: 12 additions & 0 deletions src/theme/styles/theme.css
Original file line number Diff line number Diff line change
Expand Up @@ -173,3 +173,15 @@ input[type="search"] {
opacity: 1;
}
}

.nx-list-container {
@apply nx-mt-6;

.nx-list-container {
@apply nx-mt-0;
}

& li:has(.nx-list-container) + li {
@apply nx-mt-6;
}
}

0 comments on commit 162a6b3

Please sign in to comment.