first commit

This commit is contained in:
felden.r@grenoble.archi.fr
2026-01-05 15:35:14 +01:00
commit 1af353253a
28 changed files with 6843 additions and 0 deletions
+457
View File
@@ -0,0 +1,457 @@
# Analyse Complète du Code - BoideloV3
## 📋 Table des Matières
1. [Présentation du Projet](#présentation-du-projet)
2. [Structure du Projet](#structure-du-projet)
3. [Fichiers Principaux](#fichiers-principaux)
4. [Fonctionnalités](#fonctionnalités)
5. [Technologies et Dépendances](#technologies-et-dépendances)
6. [Architecture](#architecture)
7. [Composants et Leurs Relations](#composants-et-leurs-relations)
8. [Configuration](#configuration)
9. [Changelog et Améliorations Récentes](#changelog-et-améliorations-récentes)
---
## 🎮 Présentation du Projet
**BoideloV3** est une application Android de jeu d'alcool (similaire à "King's Cup" ou "Never Have I Ever"). L'application permet à un groupe de joueurs de répondre à des questions aléatoires avec des consommations de boissons associées.
### Caractéristiques Principales
- **Jeu multijoueur** (minimum 3 joueurs, sans maximum)
- **150 questions préchargées** depuis un fichier JSON
- **Interface en français** avec Material Design 3
- **Défis multi-manches** avec système de gestion
- **Paramètres personnalisables** (nombre de questions, ajout de gorgées, durée des défis)
- **Générateur aléatoire optimisé** pour une vraie randomisation
- **Intégration OpenAI** (en développement)
- **Connexion PostgreSQL** (prête)
---
## 📁 Structure du Projet
```
D:\boidelo\
├── .gradle/ # Cache de construction Gradle
├── .idea/ # Configuration IntelliJ IDEA
├── app/
│ ├── build.gradle # Configuration de build app-level
│ ├── libs/ # Librairies JAR externes
│ │ ├── postgresql-42.2.27.jre7.jar
│ │ └── postgresql-42.6.0.jar
│ └── src/
│ └── main/
│ ├── AndroidManifest.xml
│ ├── assets/
│ │ └── question.json # Base de données questions (150 questions)
│ ├── java/com/example/boidelov3/
│ │ ├── MainActivity.java # Écran principal avec ajout dynamique de joueurs
│ │ ├── Jeux.java # Activité principale du jeu avec gestion des défis
│ │ ├── Jeuxold.java # Implémentation héritée
│ │ ├── JeuxParametres.java # Paramètres du jeu avec sliders
│ │ ├── EndGameActivity.java # Écran de fin de partie
│ │ ├── ChatGPTTask.java # Intégration OpenAI (commenté)
│ │ ├── DatabaseConnection.java # Connexion PostgreSQL
│ │ ├── data/
│ │ │ ├── Question.java # Modèle de données Question
│ │ │ └── QuestionRepository.java # Repository des questions
│ │ ├── game/
│ │ │ └── GameEngine.java # Moteur de jeu
│ │ └── utils/
│ │ ├── BoideloAnimationUtils.java # Animations UI
│ │ └── OnBoardingActivity.java # Page d'accueil
│ └── res/
│ ├── anim/ # Animations
│ ├── drawable/ # Icônes et graphiques
│ ├── layout/ # Layouts UI
│ │ ├── activity_main.xml # Écran principal
│ │ ├── activity_jeux.xml # Jeu en cours
│ │ ├── activity_jeux_parametres.xml # Paramètres
│ │ └── activity_end_game.xml # Fin de partie
│ ├── mipmap-*/ # Icônes pour différentes densités
│ ├── values/ # Chaînes, couleurs, thèmes
│ │ └── strings.xml # Textes localisés
│ ├── values-night/ # Ressources mode nuit
│ └── xml/ # Fichiers de configuration XML
├── build.gradle # Configuration de build projet-level
├── gradle.properties # Propriétés Gradle
├── settings.gradle # Paramètres du projet
├── gradlew, gradlew.bat # Exécutables Gradle wrapper
└── .gitignore # Fichier Git ignore
```
---
## 📄 Fichiers Principaux
### Activités Principales
#### `MainActivity.java`
**Point d'entrée principal** de l'application avec ajout dynamique de joueurs.
**Responsabilités :**
- Gestion de la saisie des noms de joueurs (3 champs fixes + ajouts dynamiques)
- Validation du minimum de 3 joueurs
- Génération dynamique de l'interface utilisateur avec TextInputLayout cohérents
- Persistence des noms avec SharedPreferences
- Compteur de joueurs en temps réel
**Améliorations récentes :**
- ✅ Correction de l'UI pour les champs dynamiques (bordure visible, espacement cohérent)
- ✅ Bouton suppression plus petit et mieux positionné
- ✅ Icône de suppression (poubelle) optimisée
#### `Jeux.java`
**Cœur du jeu**, gère l'affichage des questions, les mécaniques de jeu et les défis.
**Responsabilités :**
- Chargement des questions depuis le JSON
- Sélection aléatoire sans répétition
- Gestion des tours de joueurs
- Gestion des défis multi-manches
- Feedback visuel avec arrière-plans colorés
- Remplacement dynamique des variantes et joueurs
**Améliorations récentes :**
-**Générateur aléatoire optimisé** : une seule instance `Random partagée` pour toute l'activité
-**Empêcher nouveaux défis quand un défi est en cours** : filtrage des questions avec `<manches>`
-**Bug fix fin de jeu** : flag `isFinishingGame` pour éviter les clics multiples
-**Offset durée des défis** : applique le paramètre `durationDefis` au nombre de manches (5-14 + offset)
#### `JeuxParametres.java`
**Écran de configuration** des paramètres du jeu avec sliders interactifs.
**Responsabilités :**
- Configuration du nombre de questions (20-150, par pas de 10)
- Gestion des ajouts de gorgées (0-20) avec paliers de difficulté
- Configuration du ratio BDD/OPENAI (1/1 à 1/15)
- **Configuration de la durée des défis** (-5 à +15, par défaut 0)
- Gestion de la clé API OpenAI
- Test de connexion API
**Améliorations récentes :**
- ✅ Correction des sliders : affichage en temps réel des valeurs
- ✅ Slider durée des défis avec valeurs négatives autorisées (offset de -5 à +15)
#### `EndGameActivity.java`
**Écran de fin de partie** avec statistiques.
**Responsabilités :**
- Affichage des statistiques de partie
- Boutons pour rejouer ou retourner au menu
### Modèles de Données
#### `Question.java`
**Modèle de données** pour une question individuelle.
```java
public class Question {
private int id; // Identifiant unique
private String question; // Texte de la question
private int gorger; // Nombre de gorgées
private boolean distribution; // Flag de distribution
private boolean recois; // Flag de réception
private List<String> variante; // Variantes de la question
private int manchesRestantes; // Nombre de manches restantes
private String arretMessageManche; // Message de fin de défi
}
```
#### `QuestionRepository.java`
**Repository** pour la gestion des questions avec filtrage.
---
## ⚡ Fonctionnalités
### Gestion des Joueurs
- **3 champs fixes** pour les premiers joueurs
- **Ajout dynamique** de joueurs avec bouton de suppression
- **Minimum 3 joueurs** requis pour commencer
- **Support illimité** de nombre de joueurs
- **Persistance** avec SharedPreferences
- **Compteur en temps réel** : "Joueurs: X / min. 3"
### Système de Questions
- **150 questions préchargées** depuis JSON
- **Sélection aléatoire optimisée** sans répétition
- **Variantes** avec remplacement dynamique de contenu
- **Questions à manches** avec mécanique de compte à rebours
- **Filtrage intelligent** : pas de nouveau défi si un défi est en cours
### Mécaniques de Jeu
- **Ajustement dynamique** du nombre de gorgées via slider (0-20)
- **Randomisation optimisée** des joueurs pour les questions
- **Feedback visuel** avec arrière-plans colorés
- **Défis multi-manches** avec affichage du compteur
- **Système de paliers** : de "Grosse merde" à "L'ENDER DRAGON"
### Paramètres de Partie
| Paramètre | Plage | Défaut | Description |
|-----------|-------|--------|-------------|
| **Nombre de questions** | 20-150 (par 10) | 50 | Nombre de questions avant fin de partie |
| **Ajout de gorgées** | 0-20 | 0 | Gorgées supplémentaires à chaque consommation |
| **Ratio BDD/OPENAI** | 1/1 à 1/15 | 1/8 | Ratio entre questions locales et IA |
| **Durée des défis (offset)** | -5 à +15 | 0 | Offset appliqué au nombre de manches |
### Interface Utilisateur
- **Material Design 3** avec composants modernes
- **Animations fluides** (fade in, slide out, pop in)
- **Feedback haptique** sur les interactions
- **Localisation en français** entièrement corrigée
- **Mode sombre** avec thèmes adaptés
---
## 🛠 Technologies et Dépendances
### Technologies Principales
| Technologie | Version | Usage |
|-------------|---------|-------|
| **Android SDK** | 33 (compile) | Développement Android natif |
| **Java** | 17 | Langage principal |
| **Gradle** | 8.2 | Automatisation de build |
### Bibliothèques Principales
```gradle
dependencies {
// Material Design
implementation 'com.google.android.material:material:1.12.0'
// Cœur AndroidX
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.2.0'
// Réseau
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
// Base de données
implementation 'com.impossibl.pgjdbc-ng:pgjdbc-ng:0.8.3'
// Traitement JSON
implementation 'com.google.code.gson:gson:2.10.1'
// Tests
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}
```
---
## 🏗 Architecture
### Pattern MVC (Model-View-Controller)
```
┌─────────────────────────────────────────────────┐
│ Model │
│ • Question.java │
│ • QuestionRepository.java │
└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐
│ Controller │
│ • MainActivity.java │
│ • Jeux.java │
│ • JeuxParametres.java │
│ • EndGameActivity.java │
└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐
│ View │
│ • XML Layouts │
│ • Resources (drawable, strings, colors) │
│ • Animations │
└─────────────────────────────────────────────────┘
```
### Flux des Activités
```
MainActivity (Saisie joueurs)
↓ validation (min. 3 joueurs)
JeuxParametres (Configuration)
↓ paramètres configurés
Jeux (Partie en cours)
↓ toutes les questions posées OU fin manches
EndGameActivity (Stats et fin)
MainActivity (Retour menu)
```
---
## 🔗 Composants et Leurs Relations
### Flux de Données
```
┌────────────────────────────────────────────────────────────┐
│ MainActivity │
│ - 3 champs fixes + ajouts dynamiques │
│ - Compteur temps réel : "Joueurs: X / min. 3" │
│ - UI cohérente pour tous les champs │
└────────────────────┬───────────────────────────────────────┘
│ Intent avec liste joueurs
┌────────────────────────────────────────────────────────────┐
│ JeuxParametres │
│ - Slider questions : 20-150 (pas de 10) │
│ - Slider gorgées : 0-20 avec paliers │
│ - Slider ratio BDD/OPENAI : 1-15 │
│ - Slider durée défis : -5 à +15 (offset) │
│ - Toggle OpenAI + champ clé API │
└────────────────────┬───────────────────────────────────────┘
│ Intent avec tous les paramètres
┌────────────────────────────────────────────────────────────┐
│ Jeux │
│ - Charge questions depuis JSON (150 questions) │
│ - Générateur Random optimisé (instance unique) │
│ - Filtre questions <manches> si défi en cours │
│ - Applique offset durée défis au nombre de manches │
│ - Gère défis multi-manches │
│ - Flag isFinishingGame pour éviter bugs fin de partie │
└────────────────────┬───────────────────────────────────────┘
│ Fin de partie
┌────────────────────────────────────────────────────────────┐
│ EndGameActivity │
│ - Affiche statistiques │
│ - Boutons Rejouer / Retour │
└────────────────────────────────────────────────────────────┘
```
---
## ⚙️ Configuration
### Configuration de Build
| Propriété | Valeur |
|-----------|--------|
| **Compile SDK** | 33 |
| **Min SDK** | 24 |
| **Target SDK** | 33 |
| **Version Code** | 1 |
| **Version Name** | "1.0" |
| **Package** | com.example.boidelov3 |
### Configuration Base de Données
```
Hôte : 82.65.214.214
Port : 5432
Base de données : boidelo
Utilisateur : android
```
---
## 🔄 Changelog et Améliorations Récentes
### Version Actuelle - 2025
#### ✅ Corrections Orthographe (2025)
- **MainActivity.java** : "ne peux pas" → "ne peut pas"
- **question.json** : "diferentes" → "différentes", "veritable" → "véritable", "tu a" → "tu as", etc.
- **strings.xml** : "c ki" → "C'est qui", "komment" → "comment", "Prenom" → "Prénom"
- **Jeuxold.java** : nombreuses corrections (tour de rôle, choisissant, défie, etc.)
#### ✅ Optimisation Aléatoire (2025)
- **Problème** : `new Random()` créé à chaque appel causait des répétitions
- **Solution** : Instance unique `private final Random random = new Random()` partagée dans toute l'activité
- **Fichiers modifiés** : `Jeux.java`, `Jeuxold.java`
- **Résultat** : Vraie randomisation des joueurs et questions
#### ✅ Interface Utilisateur Cohérente (2025)
- **Problème** : Champs dynamiques avaient un style différent des 3 premiers
- **Solution** : Application complète du style Material3
- Bordure visible avec `setBoxStrokeColorStateList()`
- Couleur de fond `@color/surface`
- Largeur bordure 2dp
- Icône de suppression (X) pour effacer
- **Bouton suppression** : Taille réduite (36dp), espacement optimisé (68dp marge)
- **Résultat** : UI uniforme entre tous les champs de saisie
#### ✅ Slider Durée des Défis (2025)
- **Nouveau paramètre** : Offset pour la durée des défis
- **Plage** : -5 à +15 manches
- **Défaut** : 0 (pas d'offset)
- **Affichage** : Signe +/- pour les valeurs non nulles (-3, +5, etc.)
- **Application** : `nbaleatoiremanches = (5-14) + durationDefis`
- **Minimum garanti** : 1 manche (même avec offset négatif)
#### ✅ Gestion Intelligente des Défis (2025)
- **Problème** : Nouveaux défis pouvaient s'accumuler même quand un défi était en cours
- **Solution** : Filtrage des questions avec `<manches>` dans `getRandomQuestion()`
- **Résultat** : Plus d'accumulation de défis, un seul défi à la fois
#### ✅ Bug Fix Fin de Jeu (2025)
- **Problème** : Quand un défi était en cours à la fin des questions, il fallait cliquer plusieurs fois
- **Solution** : Flag `isFinishingGame` + désactivation bouton "Suivant"
- **Résultat** : Fin de jeu fluide sans clics multiples
#### ✅ Expansion Contenu (2025)
- **Ajout de 50 nouvelles questions** (passage de 100 à 150 questions)
- **Nouvelles catégories** :
- Questions de groupe (ski, tatouage, iPhone, etc.)
- Questions de classement (le plus drôle, le plus susceptible, etc.)
- Questions couples/amour (ghosting, premier baiser, etc.)
- Défis avec manches (accents, interdictions, mini-jeux)
- Questions interactives J1/J2/J3 (bras de fer, devinettes, mimes)
- Questions variante (activités, fandoms, musique)
---
## 🔮 Statut des Fonctionnalités
| Fonctionnalité | Statut | Détails |
|----------------|--------|---------|
| Jeu multijoueur | ✅ Terminé | Support illimité, UI cohérente |
| Questions JSON | ✅ Terminé | 150 questions, orthographe corrigée |
| Interface UI | ✅ Terminé | Material Design 3, animations |
| Sliders paramètres | ✅ Terminé | Affichage temps réel, 4 sliders actifs |
| Défis multi-manches | ✅ Terminé | Gestion optimisée, pas d'accumulation |
| Générateur aléatoire | ✅ Optimisé | Instance unique Random partagée |
| Durée défis (offset) | ✅ Terminé | -5 à +15 manches |
| Orthographe | ✅ Corrigée | Tous fichiers vérifiés |
| PostgreSQL | 🔧 Prêt | Connexion configurée |
| OpenAI ChatGPT | 🚧 En développement | Interface prête |
---
## 📝 Conclusion
Le codebase représente une **application Android de jeu d'alcool mature et bien structurée** avec des patterns d'architecture modernes. Les améliorations récentes ont considérablement amélioré l'expérience utilisateur :
- **Randomisation fiable** grâce au générateur optimisé
- **Interface cohérente** pour tous les champs de saisie
- **Défis gérés intelligemment** sans accumulation
- **Paramètres flexibles** pour personnaliser les parties
- **Contenu enrichi** avec 150 questions variées
- **Orthographe parfaite** dans tout le projet
L'architecture est propre, modulaire et facilement extensible pour de futures améliorations.
---
*Document mis à jour - Janvier 2025* 🍺
+678
View File
@@ -0,0 +1,678 @@
# Custom Ore Gem Mod
## Description
Custom Ore Gem est un mod Minecraft développé avec MCreator pour Forge 1.20.1. Ce mod modifie la distribution des ressources dans Minecraft en ajoutant de nouvelles variantes de minerais avec des drops configurables et des outils personnalisés.
> **Note importante** : Ce mod est conçu pour être utilisé avec KubeJS et ne doit pas être utilisé seul.
## Informations Techniques
- **Version de Minecraft** : 1.20.1
- **Mod Loader** : Forge (version 47.3.0)
- **Version de Java** : Java 17
- **Mod ID** : `custom_ore_gen`
- **Version** : 1.0.0
- **Auteur** : Aulyrius (créé via MCreator)
- **Site web** : https://lanro.eu
## Avant garde
Il est recommandé pour la bonne utilisation du mods d'utilisé des mods complémentaire :
* **Biomes O' Plenty** - Pour profiter des biomes supplémentaires (69 biomes BOP supportés)
* **Biome Replacer** pour supprimer les biomes caves, qui n'ont pas de sens de température et d'un point de vue joueur est pas logique.
biome_replacer.properties :
```javascript
minecraft:deep_dark > null
minecraft:dripstone_caves > null
minecraft:lush_caves > null
```
* KubeJS pour supprimer la génération de base avec le script suivant :
*remove.js*
```javascript
// priority: 0
WorldgenEvents.remove(event => {
var minecraftOreList = [
'minecraft:coal_ore',
'minecraft:deepslate_coal_ore',
'minecraft:copper_ore',
'minecraft:deepslate_copper_ore',
'minecraft:iron_ore',
'minecraft:deepslate_iron_ore',
'minecraft:gold_ore',
'minecraft:deepslate_gold_ore',
'minecraft:redstone_ore',
'minecraft:deepslate_redstone_ore',
'minecraft:emerald_ore',
'minecraft:deepslate_emerald_ore',
'minecraft:diamond_ore',
'minecraft:deepslate_diamond_ore',
'minecraft:lapis_ore',
'minecraft:deepslate_lapis_ore'
];
event.removeOres(props => {
props.blocks = minecraftOreList
});
});
```
## Fonctionnalités Principales
### Nouveaux Minerais (16 blocs)
Le mod ajoute plusieurs variantes de minerais personnalisés :
#### Variantes de Diamant
- **Deepslate Shard Diamond Ore** (`deepslatesharddiamondore`) : Un minerai de diamant qui droppe des éclats de diamant
- Se génère dans tous les biomes (forge:any)
- Se génère uniquement en profondeur (deepslate)
- Taille des filons : 16 blocs
- Drop : 1-2 Diamond Shards (Fortune supporté)
- **Concentrated Diamond Ore** (`concentrateddiamondore`) : Un minerai de diamant plus concentré
- Se génère dans les biomes froids (cold_biomes)
- Drop : 1-2 Diamants (Fortune supporté)
#### Variantes d'Or
- **Pure Golden Ore** (`puregoldenore`) : Un minerai d'or pur de haute qualité
- Se génère dans les biomes chauds (hot_biomes)
- Hauteur : 0 à 256
- Drop : 2-4 Pépites d'or
- **Deepslate Pure Golden Ore** (`deepslatepuregoldenore`) : Version deepslate du minerai d'or pur
#### Variantes de Charbon
- **Concentrated Coal Ore** (`concentratedcoalore`) : Charbon plus concentré
- Se génère dans les biomes tempérés (tempered_biomes)
- Drop : 2-4 Charbons
#### Variantes de Fer
- **Iron Ore** (`ironore`) : Variante personnalisée du minerai de fer
- Se génère dans les biomes tempérés (tempered_biomes)
- **Deepslate Iron Ore** (`deepslateironore`) : Version deepslate du minerai de fer
#### Variantes d'Émeraude
- **High Emerald Ore** (`highemeraldore`) : Émeraude de haute qualité
- Se génère dans les biomes de montagne (mountain_biomes)
- **Lower Emerald Ore** (`loweremeraldore`) : Émeraude de basse qualité
- Se génère dans les biomes très rares (rare_biomes : mushroom_fields, ice_spikes)
#### Variantes de Redstone
- **Redstone Ore** (`redstoneore`) : Variante personnalisée du minerai de redstone
- **Deepslate Redstone Ore** (`deepslateredstoneore`) : Version deepslate
#### Variantes de Lapis
- **Lapis Ore** (`lapisore`) : Variante personnalisée du minerai de lapis
- **Deepslate Lapis Ore** (`deepslatelapisore`) : Version deepslate
#### Variantes de Cuivre
- **Copper High Ore** (`copperhighore`) : Variante haute du minerai de cuivre
- Se génère dans les biomes chauds (hot_biomes)
- **Copper Lower Ore** (`copperlowerore`) : Variante basse du minerai de cuivre
- Nom affiché : "deepslate copper ore"
### Nouveaux Objets
#### Diamond Shard (Éclat de Diamant) (`diamondshard`)
- **Description** : "Diamond sparkle, to create tools or to create a diamond"
- **Rareté** : RARE
- **Stack** : 64
- **Utilisation** :
- Permet de créer des outils en éclats de diamant
- Peut être crafté en diamant complet (9 éclats = 1 diamant)
#### Ore Biome Finder (`ore_biome_finder`)
- **Description** : Un outil permettant d'identifier les minerais présents dans le biome actuel
- **Stack** : 1 (non stackable)
- **Utilisation** : Clic droit pour afficher les informations du biome actuel
- **Informations affichées** :
- Nom du biome et ID
- Tags du mod applicables au biome (cold_biomes, hot_biomes, etc.)
- Liste des minerais trouvables dans ce biome
- **Craft** : Compass + Diamond Shards (voir recettes ci-dessous)
### Outils en Diamond Shard
Le mod introduit une nouvelle catégorie d'outils située entre le fer et le diamant :
#### Pioche en Éclat de Diamant (`sharddiamondpickaxe`)
- **Durabilité** : 200 utilisations
- **Vitesse de minage** : 7.0
- **Dégâts d'attaque** : 1
- **Réparation** : Utilise des Diamond Shards
#### Pelle en Éclat de Diamant (`sharddiamondshovel`)
- **Durabilité** : 200 utilisations
- **Vitesse de minage** : 4.0
- **Dégâts d'attaque** : 2
#### Hache en Éclat de Diamant (`sharddiamondaxe`)
- **Durabilité** : 200 utilisations
- **Vitesse de minage** : 7.0
- **Dégâts d'attaque** : 6
#### Paxel en Éclat de Diamant (`sharddiamondpaxel`)
- **Description** : Outil combiné pioche + pelle + hache, tout-en-un pour le minage
- **Durabilité** : 1000 utilisations
- **Vitesse de minage** : 6.5
- **Dégâts d'attaque** : 1 (pas fait pour le combat)
- **Réparation** : Utilise des Diamond Shards
- **Fonctionnalités** :
- Mine tous les blocs (pierre, bois, terre, etc.)
- Efficace sur tous les types de blocs
- Remplace les 3 outils séparés
### Armure en Diamond Shard
Le mod introduit une armure intermédiaire située entre le fer et le diamant :
| Pièce | Protection | Durabilité | Craft |
|-------|-----------|------------|-------|
| Casque | 3 | 250 | 5 Diamond Shards |
| Plastron | 7 | 300 | 8 Diamond Shards + 1 Diamant |
| Jambières | 5 | 280 | 7 Diamond Shards + 1 Diamant |
| Bottes | 2 | 230 | 4 Diamond Shards |
| **Total** | **17** | **1060** | **24 Shards + 2 Diamants** |
**Comparaison** : Fer (15 armure, 535 durabilité) | Diamond Shard (17 armure, 1060 durabilité) | Diamant (20 armure, 2048 durabilité)
## Distribution des Minerais par Biomes
Le mod utilise une classification logique des biomes pour la génération des minerais via les biome modifiers de Forge. Le support de **Biomes O' Plenty** est inclus avec 69 biomes supplémentaires.
### Vue d'ensemble
| Catégorie | Minerais | Biomes Vanilla | Biomes BOP |
|-----------|----------|:--------------:|:----------:|
| **Cold** | Lapis, Deepslate Lapis, Concentrated Diamond | 22 | 11 |
| **Hot** | Pure Gold, Deepslate Pure Gold, Copper High, Copper Lower, Redstone, Deepslate Redstone | 20 | 15 |
| **Mountain** | High Emerald | 22 | 10 |
| **Rare** | Lower Emerald | 10 | 10 |
| **Tempered** | Iron, Deepslate Iron, Concentrated Coal | 23 | 23 |
| **All** | Deepslate Shard Diamond | - | - |
---
### 🔷 forge:any (Tous les biomes)
**Minerais** : Deepslate Shard Diamond Ore
- **TOUS** les biomes (vanilla + mods)
- **Se génère uniquement en profondeur (deepslate)**
---
### ❄️ cold_biomes (Biomes Froids)
**Minerais** : Lapis Ore, Deepslate Lapis Ore, Concentrated Diamond Ore
**Biomes Vanilla (22)** :
| Nom du Biome | Traduction |
|--------------|------------|
| snowy_slopes | Pentes enneigées |
| snowy_beach | Plage enneigée |
| snowy_plains | Plaines enneigées |
| snowy_taiga | Taïga enneigée |
| ice_spikes | Pics de glace |
| old_growth_pine_taiga | Taïga ancienne de pins |
| old_growth_spruce_taiga | Taïga ancienne d'épicéas |
| taiga | Taïga |
| cold_ocean | Océan froid |
| deep_cold_ocean | Océan profond froid |
| frozen_ocean | Océan gelé |
| deep_frozen_ocean | Océan profond gelé |
| frozen_peaks | Pics gelés |
| jagged_peaks | Pics déchiquetés |
| stony_peaks | Pics pierreux |
| dripstone_caves | Grottes de spéléothèmes |
| deep_dark | Deep Dark |
| frozen_river | Rivière gelée |
| grove | Bosquet |
**Biomes BOP (11)** :
| Nom du Biome | Traduction |
|--------------|------------|
| snowy_coniferous_forest | Forêt de conifères enneigée |
| snowy_maple_woods | Bois d'érables enneigés |
| snowy_orchard | Verger enneigé |
| snowy_fir_clearing | Clairière de sapins enneigée |
| alpine_foothills | Contreforts alpins |
| alpine | Alpin |
| snowy_tundra | Toundra enneigée |
| snowy_plains | Plaines enneigées |
| glacier | Glacier |
| ice_spikes | Pics de glace |
| icy_beach | Place verglacée |
---
### 🔥 hot_biomes (Biomes Chauds)
**Minerais** : Pure Golden Ore, Deepslate Pure Golden Ore, Copper High Ore, Copper Lower Ore, Redstone Ore, Deepslate Redstone Ore
**Biomes Vanilla (20)** :
| Nom du Biome | Traduction |
|--------------|------------|
| desert | Désert |
| badlands | Badlands |
| eroded_badlands | Badlands érodés |
| wooded_badlands | Badlands boisés |
| deep_lukewarm_ocean | Océan profond tiède |
| lukewarm_ocean | Océan tiède |
| warm_ocean | Océan chaud |
| mangrove_swamp | Marais de mangroves |
| bamboo_jungle | Jungle de bambous |
| jungle | Jungle |
| sparse_jungle | Jungle clairsemée |
| savanna | Savane |
| savanna_plateau | Plateau de savane |
| windswept_savanna | Savane balayée par le vent |
| basalt_deltas | Deltas de basalte |
| crimson_forest | Forêt écarlate |
| nether_wastes | Déserts du Nether |
| soul_sand_valley | Vallée de sable des âmes |
| warped_forest | Forêt distordue |
| deep_dark | Deep Dark |
**Biomes BOP (15)** :
| Nom du Biome | Traduction |
|--------------|------------|
| tropical_rainforest | Forêt tropicale |
| tropics | Tropiques |
| bayou | Bayou |
| arid_highlands | Hautes terres arides |
| scrubland | Broussailles |
| volcano | Volcan |
| wasteland | Terres désolées |
| wasteland_steppe | Steppe désolée |
| oasis | Oasis |
| outback | Outback |
| rocky_rainforest | Forêt tropicale rocheuse |
| rocky_shrubland | Broussailles rocheuses |
| seasonal_forest | Forêt saisonnière |
| temperate_rainforest | Forêt tempérée humide |
---
### ⛰️ mountain_biomes (Biomes Montagneux)
**Minerais** : High Emerald Ore
**Biomes Vanilla (22)** :
| Nom du Biome | Traduction |
|--------------|------------|
| windswept_hills | Collines balayées par le vent |
| windswept_gravelly_hills | Collines graveleuses balayées |
| snowy_slopes | Pentes enneigées |
| frozen_peaks | Pics gelés |
| jagged_peaks | Pics déchiquetés |
| stony_peaks | Pics pierreux |
| meadow | Prairie |
| extreme_hills | Collines extrêmes |
| extreme_hills_edge | Bord des collines extrêmes |
| extreme_hills_plus | Collines extrêmes plus |
| extreme_hills_plus_trees | Collines extrêmes arborees |
| modified_wooded_badlands_plateau | Plateau badlands boisé modifié |
| modified_badlands_plateau | Plateau badlands modifié |
| badlands_plateau | Plateau badlands |
| wooded_badlands_plateau | Plateau badlands boisé |
| eroded_badlands | Badlands érodés |
| modified_gravelly_mountains | Montagnes graveleuses modifiées |
| gravelly_mountains | Montagnes graveleuses |
| modified_gravelly_mountains_plus | Montagnes graveleuses plus modifiées |
| gravelly_mountains_plus | Montagnes graveleuses plus |
| sunflower_plains | Plaines de tournesols |
**Biomes BOP (10)** :
| Nom du Biome | Traduction |
|--------------|------------|
| highland | Hautes terres |
| highland_moor | Landes de haute altitude |
| alpine_foothills | Contreforts alpins |
| alpine | Alpin |
| mountain | Montagne |
| mountain_foothills | Contreforts montagneux |
| overgrown_cliffs | Falaises envahies |
| cliffs | Falaises |
| rocky_mountains | Montagnes rocheuses |
| rocky_peak | Pic rocheux |
---
### ✨ rare_biomes (Biomes Rares)
**Minerais** : Lower Emerald Ore
**Biomes Vanilla (10)** :
| Nom du Biome | Traduction |
|--------------|------------|
| mushroom_fields | Champignonnières |
| sparse_jungle | Jungle clairsemée |
| savanna_plateau | Plateau de savane |
| sunflower_plains | Plaines de tournesols |
| windswept_gravelly_hills | Collines graveleuses balayées |
| cherry_grove | Bosquet de cerisiers |
| flower_forest | Forêt fleurie |
| deep_dark | Deep Dark |
| old_growth_birch_forest | Forêt de bouleaux ancienne |
| ice_spikes | Pics de glace |
**Biomes BOP (10)** :
| Nom du Biome | Traduction |
|--------------|------------|
| rainbow_hills | Collines arc-en-ciel |
| origin_valley | Vallée d'origine |
| tropics | Tropiques |
| volcano | Volcan |
| mystic_grove | Bosquet mystique |
| bamboo_grove | Bosquet de bambous |
| jade_cliffs | Falaises de jade |
| visceral_heap | Tas viscéral |
| crystalline_chasm | Abîme cristallin |
| withered_abyss | Abîme flétri |
---
### 🌳 tempered_biomes (Biomes Tempérés)
**Minerais** : Iron Ore, Deepslate Iron Ore, Concentrated Coal Ore
**Biomes Vanilla (23)** :
| Nom du Biome | Traduction |
|--------------|------------|
| plains | Plaines |
| sunflower_plains | Plaines de tournesols |
| river | Rivière |
| beach | Plage |
| stony_shore | Rivage pierreux |
| birch_forest | Forêt de bouleaux |
| dark_forest | Forêt sombre |
| flower_forest | Forêt fleurie |
| forest | Forêt |
| old_growth_birch_forest | Forêt de bouleaux ancienne |
| windswept_forest | Forêt balayée par le vent |
| swamp | Marais |
| mushroom_fields | Champignonnières |
| cherry_grove | Bosquet de cerisiers |
| old_growth_pine_taiga | Taïga ancienne de pins |
| windswept_gravelly_hills | Collines graveleuses balayées |
| deep_ocean | Océan profond |
| ocean | Océan |
| lush_caves | Grottes luxuriantes |
| deep_dark | Deep Dark |
| dripstone_caves | Grottes de spéléothèmes |
**Biomes BOP (23)** :
| Nom du Biome | Traduction |
|--------------|------------|
| maple_woods | Bois d'érables |
| maple_forest | Forêt d'érables |
| orchard | Verger |
| flower_meadow | Prairie fleurie |
| deciduous_forest | Forêt de feuillus |
| deciduous_forest_cleared | Forêt de feuillus défrichée |
| shrubland | Broussailles |
| lush_grassland | Pâturage luxuriant |
| lush_swamp | Marais luxuriant |
| marsh | Marais |
| moor | Landes |
| bog | Tourbière |
| dead_forest | Forêt morte |
| dead_swamp | Marais mort |
| mediterranean_forest | Forêt méditerranéenne |
| mediterranean_woodland | Bois méditerranéen |
| dense_forest | Forêt dense |
| woodland | Bois |
| coniferous_forest | Forêt de conifères |
| fir_clearing | Clairière de sapins |
| spruce_woods | Bois d'épicéas |
| field | Champ |
| prairie | Prairie |
---
## Support Biomes O' Plenty
Le mod inclut un support complet pour **Biomes O' Plenty** avec des biome modifiers dédiés pour chaque catégorie :
- `cold_bop_biomes` (11 biomes)
- `hot_bop_biomes` (15 biomes)
- `mountain_bop_biomes` (10 biomes)
- `rare_bop_biomes` (10 biomes)
- `tempered_bop_biomes` (23 biomes)
Les minerais se génèrent automatiquement dans les biomes BOP correspondants à leur catégorie vanilla.
## Mécaniques de Jeu
### Génération du Monde
- **Distribution des minerais** : Utilise le système de biome modifiers de Forge avec des tags de biomes personnalisés
- **Profondeur** : Configurable pour chaque type de minerai via le fichier de configuration
- **Taille des filons** : Configurable via le fichier de configuration
### Mécaniques de Drop
Le mod utilise un système de drops configurable (`ConfigurableOreDropsProcedure`) :
- **Expérience** : Tous les minerais personnalisés dropent 2 orbes d'expérience (configurable)
- **Silk Touch** : Supporté - les minerais peuvent être minés avec l'enchantement Silk Touch
- **Fortune** : Supporté pour Shard Diamond Ore et Concentrated Diamond Ore (configurable)
### Caractéristiques des Blocs
- **Light Block** : 15 (les minerais bloquent la lumière)
- **Sound Type** : STONE
- **Resistance** : Variable selon le type (3f pour Concentrated Diamond/Coal, 1.3f pour Shard Diamond)
- **Requires Correct Tool** : Tous les minerais nécessitent l'outil approprié pour être minés
## Recettes de Craft
### Ore Biome Finder
```
[DiamantShard] [Compas] [DiamantShard]
[Compas] [ ] [Compas]
[DiamantShard] [Compas] [DiamantShard]
= 1 Ore Biome Finder
```
### Diamant à partir d'Éclats
```
[Éclat] [Éclat] [Éclat]
[Éclat] [Éclat] [Éclat]
[Éclat] [Éclat] [Éclat]
= 1 Diamant
```
### Outils en Diamond Shard
Les recettes suivent le pattern standard des outils Minecraft :
- **Pioche** : 2 Diamond Shards + 3 bâtons
- **Pelle** : 1 Diamond Shard + 2 bâtons
- **Hache** : 3 Diamond Shards + 2 bâtons
### Paxel en Diamond Shard
```
[Hache] [Pelle] [Pioche]
[Bâton] [ ] [Bâton]
= 1 Paxel en Diamond Shard
```
### Armure en Diamond Shard
Les recettes suivent le pattern standard des armures Minecraft :
- **Casque** : 5 Diamond Shards
- **Plastron** : 8 Diamond Shards + 1 Diamant
- **Jambières** : 7 Diamond Shards + 1 Diamant
- **Bottes** : 4 Diamond Shards
## Commandes
### `/ores` ou `/ore`
Une commande permettant d'identifier les minerais présents dans le biome actuel.
**Utilisation** :
- Jouez uniquement (doit être exécutée par un joueur)
- Affiche les mêmes informations que l'Ore Biome Finder
**Informations affichées** :
- Nom du biome et ID (ex: `minecraft:plains`)
- Tags du mod applicables au biome (cold_biomes, hot_biomes, mountain_biomes, tempered_biomes, rare_biomes)
- Liste des minerais trouvables dans le biome actuel
**Exemple de sortie** :
```
=== Minerais dans: plains ===
Biome ID: minecraft:plains
Tags du mod: tempered_biomes
Minerais trouvables:
* Charbon Concentre
* Fer (stone)
* Fer (deepslate)
* Diamant Shard (deepslate)
* Bloc Diamant Shard
```
## Intégration
### Mode Créatif
Les items sont organisés dans les onglets créatifs via `CustomOreGenModTabs` :
- **INGREDIENTS** : Diamond Shards et blocs de minerais
- **TOOLS_AND_UTILITIES** : Pioche, pelle, hache, paxel et Ore Biome Finder
- **COMBAT** : Armure complète en Diamond Shard (casque, plastron, jambières, bottes)
### Langue
Le mod inclut des fichiers de localisation en anglais (`en_us.json`) avec des noms descriptifs pour tous les blocs et objets.
## Configuration
Le mod inclut un système de configuration complet (`ModConfigs.java` avec `ConfigHelper.java`) qui permet aux utilisateurs et aux pack makers de personnaliser de nombreux aspects.
### Emplacement du Fichier de Configuration
Après le premier lancement du mod, un fichier de configuration est généré à :
```
config/custom_ore_gen-common.toml
```
### Options de Configuration
#### Génération des Minerais [ore_generation]
- **shard_diamond_ore** : Hauteur min/max, filons par chunk, taille des filons
- **concentrated_diamond_ore** : Filons par chunk, taille des filons
- **pure_golden_ore** : Filons par chunk, hauteur min/max
- **concentrated_coal_ore** : Filons par chunk
- **impure_ores** : Filons de fer/or par chunk
- **emerald_ores** : Filons high/lower par chunk
- **copper_ores** : Filons high/lower par chunk
#### Stats des Outils [tool_stats]
- **shard_diamond_tools** : Durabilité, vitesse, dégâts pour pioche, hache et pelle
#### Drops des Minerais [drops]
- **shard_diamond_ore** : Min/max drops, activation Fortune
- **concentrated_diamond_ore** : Min/max drops, activation Fortune
- **concentrated_coal_ore** : Min/max drops
- **pure_golden_ore** : Min/max drops
- **ash_coal_ore** : Min/max drops
- **impure_ores** : Min/max drops pour fer et or
- **oreExperience** : Expérience droppée par les minerais personnalisés
#### Activation des Fonctionnalités [features]
- **enableShardDiamondTools** : Active les outils en éclats de diamant
- **enableShardDiamondOre** : Active la génération du minerai d'éclats
- **enableConcentratedOres** : Active les minerais concentrés (Diamant, Charbon)
- **enableImpureOres** : Active les minerais impurs (Fer, Or)
- **enableAshCoalOre** : Active le minerai de charbon de cendre
- **enablePureGoldenOre** : Active le minerai d'or pur
- **enableCustomEmeraldOres** : Active les minerais d'émeraude personnalisés
- **enableCustomCopperOres** : Active les minerais de cuivre personnalisés
- **enableVanillaOreVariants** : Active les variantes de minerais vanilla
## Installation
1. Assurez-vous d'avoir Minecraft 1.20.1 installé avec Forge 47.3.0+
2. Placez le fichier .jar du mod dans le dossier `mods` de votre installation Minecraft
3. Lancez le jeu avec le profil Forge
> **Important** : Ce mod est conçu pour être utilisé avec KubeJS et ne doit pas être utilisé seul.
## Architecture du Code
### Structure des Paquets
```
net.mcreator.customoregen/
├── CustomOreGenMod.java # Classe principale du mod
├── OresCommand.java # Commande /ores pour détecter les minerais
├── block/ # Classes des blocs (16 minerais)
│ ├── SharddiamondblockoreBlock.java
│ ├── ConcentrateddiamondoreBlock.java
│ ├── ConcentratedcoaloreBlock.java
│ ├── PuregoldenoreBlock.java
│ ├── DeepslatepuregoldenoreBlock.java
│ ├── IronoreBlock.java
│ ├── DeepslateironoreBlock.java
│ ├── LapisoreBlock.java
│ ├── DeepslatelapisoreBlock.java
│ ├── RedstoneoreBlock.java
│ ├── DeepslateredstoneoreBlock.java
│ ├── CopperhighoreBlock.java
│ ├── CopperloweroreBlock.java
│ ├── HighemeraldoreBlock.java
│ ├── LoweremeraldoreBlock.java
│ └── DeepslatesharddiamondoreBlock.java
├── config/ # Système de configuration
│ ├── ModConfigs.java # Configuration Forge
│ └── ConfigHelper.java # Helper pour la configuration
├── item/ # Classes des items
│ ├── DiamondshardItem.java # Item Diamond Shard (RARE)
│ ├── OreBiomeFinderItem.java # Item Ore Biome Finder
│ ├── SharddiamondpickaxeItem.java
│ ├── SharddiamondshovelItem.java
│ ├── SharddiamondaxeItem.java
│ ├── SharddiamondpaxelItem.java # Paxel (outil combiné)
│ ├── SharddiamondhelmetItem.java # Casque en Diamond Shard
│ ├── SharddiamondchestplateItem.java # Plastron en Diamond Shard
│ ├── SharddiamondleggingsItem.java # Jambières en Diamond Shard
│ └── SharddiamondbootsItem.java # Bottes en Diamond Shard
├── procedures/ # Procédures et logique
│ ├── ConfigurableOreDropsProcedure.java # Drops configurables
│ └── OreexperienceProcedure.java # Drops d'XP
└── init/ # Registres Forge
├── CustomOreGenModBlocks.java # 16 blocs
├── CustomOreGenModItems.java # Items + BlockItems
└── CustomOreGenModTabs.java # Onglets créatifs
```
### Classes Principales
- **CustomOreGenMod** : Point d'entrée du mod, gère l'initialisation et le réseau
- **OresCommand** : Commande `/ores` pour identifier les minerais du biome actuel
- **OreBiomeFinderItem** : Item utilisable pour détecter les minerais du biome (clic droit)
- **SharddiamondpaxelItem** : Paxel combinant pioche + pelle + hache en un seul outil
- **Sharddiamondhelmet/chestplate/leggings/bootsItem** : Armure en Diamond Shard
- **ModConfigs** : Configuration complète avec 4 sections (ore_generation, tool_stats, drops, features)
- **ConfigurableOreDropsProcedure** : Gère les drops des minerais avec support Fortune/Silk Touch
- **OreexperienceProcedure** : Gère les drops d'expérience lors du minage
## Philosophie du Mod
Custom Ore Gem est conçu pour :
- **Modifier la distribution des ressources** Minecraft avec de nouvelles variantes de minerais
- **Fournir un système de drops configurable** pour les pack makers et moddeurs
- **Introduire une progression intermédiaire** à travers les Diamond Shards (outils et armure)
- **Offrir des outils d'exploration** avec l'Ore Biome Finder et la commande `/ores`
- **Proposer un outil tout-en-un** avec le Paxel en Diamond Shard (1000 durabilité)
- **Fournir une armure intermédiaire** entre fer et diamant (17 protection, 1060 durabilité)
- **S'intégrer avec KubeJS** pour permettre des modifications avancées
- **Supporter Biomes O' Plenty** avec 69 biomes supplémentaires classés par température
## Crédits
- **Auteur** : Aulyrius
- **Outil de développement** : MCreator (https://mcreator.net/about)
- **Site web** : https://lanro.eu
- **Framework** : Minecraft Forge 1.20.1 (version 47.3.0)
---
**Version** : 1.0.0
**Pour Minecraft** : 1.20.1
**Mod ID** : custom_ore_gen
**License** : Not specified
+1204
View File
File diff suppressed because it is too large Load Diff
+1169
View File
File diff suppressed because it is too large Load Diff
+571
View File
@@ -0,0 +1,571 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Site personnel de Roman Felden - Coordinateur Sécurité & Systèmes Informatique à Grenoble">
<title>Roman Felden - Portfolio</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<style>
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
:root {
--color-primary: #4f46e5;
--color-primary-light: #818cf8;
--color-primary-dark: #3730a3;
--color-secondary: #0ea5e9;
--color-accent: #f59e0b;
--color-text: #0f172a;
--color-text-muted: #64748b;
--color-text-light: #94a3b8;
--color-bg: #ffffff;
--color-bg-alt: #f8fafc;
--color-bg-card: #ffffff;
--color-border: #e2e8f0;
--color-border-light: #f1f5f9;
--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1);
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
--radius-sm: 6px;
--radius-md: 12px;
--radius-lg: 20px;
--radius-xl: 28px;
}
html {
font-size: 16px;
scroll-behavior: smooth;
}
body {
font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
line-height: 1.7;
color: var(--color-text);
background: var(--color-bg-alt);
min-height: 100vh;
}
/* Navigation */
.navbar {
background: var(--color-bg);
box-shadow: var(--shadow-md);
position: sticky;
top: 0;
z-index: 1000;
padding: 1rem 2rem;
}
.navbar-container {
max-width: 1200px;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: center;
}
.navbar-brand {
font-size: 1.5rem;
font-weight: 800;
color: var(--color-primary);
text-decoration: none;
display: flex;
align-items: center;
gap: 0.5rem;
}
.navbar-brand span {
background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-secondary) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.navbar-menu {
display: flex;
gap: 2rem;
list-style: none;
}
.navbar-menu a {
color: var(--color-text);
text-decoration: none;
font-weight: 600;
padding: 0.5rem 1rem;
border-radius: var(--radius-sm);
transition: all 0.3s ease;
}
.navbar-menu a:hover,
.navbar-menu a.active {
color: var(--color-primary);
background: var(--color-bg-alt);
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 2rem;
}
/* Hero Section */
.hero {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 8rem 2rem 6rem;
text-align: center;
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
top: -50%;
right: -10%;
width: 500px;
height: 500px;
background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%);
border-radius: 50%;
}
.hero::after {
content: '';
position: absolute;
bottom: -30%;
left: -5%;
width: 400px;
height: 400px;
background: radial-gradient(circle, rgba(255,255,255,0.08) 0%, transparent 70%);
border-radius: 50%;
}
.hero-content {
position: relative;
z-index: 1;
}
.hero-avatar {
width: 150px;
height: 150px;
border-radius: 50%;
background: linear-gradient(135deg, rgba(255,255,255,0.25) 0%, rgba(255,255,255,0.1) 100%);
display: flex;
align-items: center;
justify-content: center;
font-size: 4rem;
font-weight: 800;
border: 5px solid rgba(255, 255, 255, 0.3);
backdrop-filter: blur(10px);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
margin: 0 auto 2rem;
}
.hero h1 {
font-size: 3.5rem;
font-weight: 800;
margin-bottom: 1rem;
letter-spacing: -0.03em;
}
.hero p {
font-size: 1.5rem;
opacity: 0.95;
margin-bottom: 2rem;
font-weight: 400;
}
.hero-buttons {
display: flex;
gap: 1rem;
justify-content: center;
flex-wrap: wrap;
}
.btn {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 1rem 2rem;
border-radius: 50px;
text-decoration: none;
font-weight: 600;
transition: all 0.3s ease;
}
.btn-primary {
background: white;
color: var(--color-primary);
}
.btn-primary:hover {
transform: translateY(-3px);
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
}
.btn-outline {
background: transparent;
color: white;
border: 2px solid white;
}
.btn-outline:hover {
background: white;
color: var(--color-primary);
}
/* Section */
.section {
padding: 6rem 0;
}
.section-header {
text-align: center;
margin-bottom: 4rem;
}
.section-header h2 {
font-size: 2.5rem;
font-weight: 800;
color: var(--color-text);
margin-bottom: 1rem;
}
.section-header p {
font-size: 1.1rem;
color: var(--color-text-muted);
max-width: 600px;
margin: 0 auto;
}
/* Cards Grid */
.cards-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
gap: 2rem;
}
.card {
background: var(--color-bg-card);
border-radius: var(--radius-lg);
padding: 2rem;
box-shadow: var(--shadow-sm);
border: 1px solid var(--color-border-light);
transition: all 0.3s ease;
display: flex;
flex-direction: column;
}
.card:hover {
transform: translateY(-5px);
box-shadow: var(--shadow-lg);
}
.card-icon {
width: 60px;
height: 60px;
background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-secondary) 100%);
border-radius: var(--radius-md);
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
margin-bottom: 1.5rem;
}
.card h3 {
font-size: 1.25rem;
font-weight: 700;
margin-bottom: 0.75rem;
color: var(--color-text);
}
.card p {
color: var(--color-text-muted);
line-height: 1.6;
flex: 1;
}
.card-link {
display: inline-flex;
align-items: center;
gap: 0.5rem;
color: var(--color-primary);
text-decoration: none;
font-weight: 600;
margin-top: 1rem;
transition: all 0.3s ease;
}
.card-link:hover {
color: var(--color-primary-dark);
gap: 0.75rem;
}
/* Footer */
.footer {
background: var(--color-text);
color: white;
padding: 3rem 2rem;
text-align: center;
}
.footer p {
opacity: 0.8;
}
.footer-heart {
color: #ef4444;
animation: heartbeat 1.5s ease-in-out infinite;
}
@keyframes heartbeat {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.1); }
}
/* Responsive */
@media (max-width: 768px) {
.hero h1 {
font-size: 2.5rem;
}
.hero p {
font-size: 1.1rem;
}
.navbar-menu {
gap: 1rem;
}
.navbar-menu a {
padding: 0.5rem;
font-size: 0.9rem;
}
.cards-grid {
grid-template-columns: 1fr;
}
}
</style>
</head>
<body>
<!-- Navigation -->
<nav class="navbar">
<div class="navbar-container">
<a href="index.html" class="navbar-brand">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"/>
</svg>
<span>RF</span>
</a>
<ul class="navbar-menu">
<li><a href="index.html" class="active">Accueil</a></li>
<li><a href="cv.html">CV</a></li>
<li><a href="projets.html">Projets</a></li>
</ul>
</div>
</nav>
<!-- Hero Section -->
<section class="hero">
<div class="hero-content">
<div class="hero-avatar">RF</div>
<h1>Roman Felden</h1>
<p>Coordinateur Sécurité & Systèmes Informatique</p>
<div class="hero-buttons">
<a href="cv.html" class="btn btn-primary">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/>
</svg>
Voir mon CV
</a>
<a href="projets.html" class="btn btn-outline">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z"/>
</svg>
Mes Projets
</a>
</div>
</div>
</section>
<!-- A Propos -->
<section class="section">
<div class="container">
<div class="section-header">
<h2>À Propos</h2>
<p>Passionné par les systèmes, réseaux et sécurité informatique</p>
</div>
<div class="cards-grid">
<div class="card">
<div class="card-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" stroke="white">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z"/>
</svg>
</div>
<h3>Expérience</h3>
<p>Plus de 5 ans d'expérience dans l'administration système et réseau, avec une spécialisation en sécurité informatique.</p>
</div>
<div class="card">
<div class="card-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" stroke="white">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"/>
</svg>
</div>
<h3>Formation</h3>
<p>Master RIE (Réseau Informatique en Entreprise) de Grenoble INP - Ensimag, avec une spécialisation en systèmes et réseaux.</p>
</div>
<div class="card">
<div class="card-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" stroke="white">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"/>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 11a3 3 0 11-6 0 3 3 0 016 0z"/>
</svg>
</div>
<h3>Localisation</h3>
<p>Basé à Grenoble, France. Disponible pour des opportunités professionnelles dans la région ou en télétravail.</p>
</div>
</div>
</div>
</section>
<!-- Compétences Clés -->
<section class="section" style="background: var(--color-bg);">
<div class="container">
<div class="section-header">
<h2>Compétences Clés</h2>
<p>Domaines d'expertise technique</p>
</div>
<div class="cards-grid">
<div class="card">
<div class="card-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" stroke="white">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2m-2-4h.01M17 16h.01"/>
</svg>
</div>
<h3>Systèmes & Réseaux</h3>
<p>Administration Linux, Windows Server, Active Directory, Switch, Routeur, Firewall</p>
</div>
<div class="card">
<div class="card-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" stroke="white">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"/>
</svg>
</div>
<h3>Sécurité</h3>
<p>Supervision de la sécurité informatique, politiques de sécurité, gestion des incidents</p>
</div>
<div class="card">
<div class="card-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" stroke="white">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 3v2m6-2v2M9 19v2m6-2v2M5 9H3m2 6H3m18-6h-2m2 6h-2M7 19h10a2 2 0 002-2V7a2 2 0 00-2-2H7a2 2 0 00-2 2v10a2 2 0 002 2zM9 9h6v6H9V9z"/>
</svg>
</div>
<h3>Virtualisation</h3>
<p>Proxmox, gestion de serveurs virtuels, déploiement d'infrastructures virtualisées</p>
</div>
<div class="card">
<div class="card-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" stroke="white">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"/>
</svg>
</div>
<h3>Développement</h3>
<p>Python, Bash, scripting, développement Android (Java)</p>
</div>
</div>
</div>
</section>
<!-- Projets -->
<section class="section">
<div class="container">
<div class="section-header">
<h2>Mes Projets</h2>
<p>Découvrez mes réalisations personnelles et professionnelles</p>
</div>
<div class="cards-grid">
<div class="card">
<div class="card-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" stroke="white">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2m-2-4h.01M17 16h.01"/>
</svg>
</div>
<h3>Homelab Proxmox</h3>
<p>Infrastructure de virtualisation complète avec Proxmox pour héberger divers services et expérimentations techniques.</p>
<a href="projets.html#homelab" class="card-link">
En savoir plus
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
</svg>
</a>
</div>
<div class="card">
<div class="card-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" stroke="white">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z"/>
</svg>
</div>
<h3>Boidelo</h3>
<p>Application Android de jeu d'alcool multijoueur avec 150 questions, interface Material Design 3 et paramètres personnalisables.</p>
<a href="projets.html#boidelo" class="card-link">
En savoir plus
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
</svg>
</a>
</div>
<div class="card">
<div class="card-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" stroke="white">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z"/>
</svg>
</div>
<h3>Custom Ore Gen</h3>
<p>Mod Minecraft 1.20.1 modifiant la distribution des ressources avec nouveaux minerais, outils et armures intermédiaires.</p>
<a href="projets.html#custom-ore-gen" class="card-link">
En savoir plus
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
</svg>
</a>
</div>
<div class="card">
<div class="card-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" stroke="white">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
</svg>
</div>
<h3>GeoRealmCraft</h3>
<p>Modpack Minecraft avec 345 mods, génération de monde réaliste, colonies, machineries Create et véhicules.</p>
<a href="projets.html#georealmcraft" class="card-link">
En savoir plus
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
</svg>
</a>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer class="footer">
<div class="container">
<p>© 2025 Roman Felden · Fait avec <span class="footer-heart"></span> à Grenoble, France</p>
<p style="margin-top: 0.5rem; font-size: 0.9rem;">
<a href="https://lanro.eu" target="_blank" style="color: white; opacity: 0.8; text-decoration: none;">lanro.eu</a>
</p>
</div>
</footer>
</body>
</html>
+738
View File
@@ -0,0 +1,738 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Projets de Roman Felden - Homelab, Android, Minecraft modding">
<title>Projets - Roman Felden</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<style>
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
:root {
--color-primary: #4f46e5;
--color-primary-light: #818cf8;
--color-primary-dark: #3730a3;
--color-secondary: #0ea5e9;
--color-accent: #f59e0b;
--color-text: #0f172a;
--color-text-muted: #64748b;
--color-text-light: #94a3b8;
--color-bg: #ffffff;
--color-bg-alt: #f8fafc;
--color-bg-card: #ffffff;
--color-border: #e2e8f0;
--color-border-light: #f1f5f9;
--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1);
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
--radius-sm: 6px;
--radius-md: 12px;
--radius-lg: 20px;
--radius-xl: 28px;
}
html {
font-size: 16px;
scroll-behavior: smooth;
}
body {
font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
line-height: 1.7;
color: var(--color-text);
background: var(--color-bg-alt);
min-height: 100vh;
}
/* Navigation */
.navbar {
background: var(--color-bg);
box-shadow: var(--shadow-md);
position: sticky;
top: 0;
z-index: 1000;
padding: 1rem 2rem;
}
.navbar-container {
max-width: 1200px;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: center;
}
.navbar-brand {
font-size: 1.5rem;
font-weight: 800;
color: var(--color-primary);
text-decoration: none;
display: flex;
align-items: center;
gap: 0.5rem;
}
.navbar-brand span {
background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-secondary) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.navbar-menu {
display: flex;
gap: 2rem;
list-style: none;
}
.navbar-menu a {
color: var(--color-text);
text-decoration: none;
font-weight: 600;
padding: 0.5rem 1rem;
border-radius: var(--radius-sm);
transition: all 0.3s ease;
}
.navbar-menu a:hover,
.navbar-menu a.active {
color: var(--color-primary);
background: var(--color-bg-alt);
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 3rem 2rem;
}
/* Header */
.page-header {
text-align: center;
margin-bottom: 4rem;
}
.page-header h1 {
font-size: 3rem;
font-weight: 800;
background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-secondary) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: 1rem;
}
.page-header p {
font-size: 1.2rem;
color: var(--color-text-muted);
}
/* Project Section */
.project-section {
background: var(--color-bg);
border-radius: var(--radius-xl);
padding: 3rem;
margin-bottom: 3rem;
box-shadow: var(--shadow-lg);
scroll-margin-top: 100px;
}
.project-section:last-child {
margin-bottom: 0;
}
.project-header {
display: flex;
align-items: center;
gap: 1.5rem;
margin-bottom: 2rem;
flex-wrap: wrap;
}
.project-icon {
width: 80px;
height: 80px;
background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-secondary) 100%);
border-radius: var(--radius-lg);
display: flex;
align-items: center;
justify-content: center;
font-size: 2.5rem;
flex-shrink: 0;
}
.project-icon svg {
width: 40px;
height: 40px;
color: white;
}
.project-title h2 {
font-size: 2rem;
font-weight: 800;
color: var(--color-text);
margin-bottom: 0.5rem;
}
.project-subtitle {
font-size: 1.1rem;
color: var(--color-text-muted);
}
.project-badges {
display: flex;
gap: 0.75rem;
flex-wrap: wrap;
margin-bottom: 2rem;
}
.badge {
display: inline-block;
background: var(--color-bg-alt);
color: var(--color-text);
padding: 0.5rem 1rem;
border-radius: 50px;
font-size: 0.85rem;
font-weight: 600;
border: 2px solid var(--color-border-light);
}
.badge-primary {
background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);
color: white;
border-color: transparent;
}
.project-description {
font-size: 1.05rem;
color: var(--color-text-muted);
line-height: 1.8;
margin-bottom: 2rem;
}
.project-features {
display: grid;
gap: 1.5rem;
margin-bottom: 2rem;
}
.feature-item {
display: flex;
align-items: flex-start;
gap: 1rem;
padding: 1.25rem;
background: var(--color-bg-alt);
border-radius: var(--radius-md);
border-left: 4px solid var(--color-primary);
}
.feature-icon {
width: 24px;
height: 24px;
color: var(--color-primary);
flex-shrink: 0;
margin-top: 0.1rem;
}
.feature-content h4 {
font-size: 1rem;
font-weight: 700;
color: var(--color-text);
margin-bottom: 0.25rem;
}
.feature-content p {
font-size: 0.95rem;
color: var(--color-text-muted);
margin: 0;
}
.tech-stack {
display: flex;
flex-wrap: wrap;
gap: 0.75rem;
margin-top: 2rem;
padding-top: 2rem;
border-top: 1px solid var(--color-border-light);
}
.tech-item {
display: flex;
align-items: center;
gap: 0.5rem;
background: var(--color-bg-alt);
padding: 0.5rem 1rem;
border-radius: var(--radius-sm);
font-size: 0.9rem;
font-weight: 600;
color: var(--color-text);
}
.tech-item::before {
content: '';
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--color-secondary);
}
/* Footer */
.footer {
background: var(--color-text);
color: white;
padding: 3rem 2rem;
text-align: center;
margin-top: 4rem;
}
.footer p {
opacity: 0.8;
}
.footer-heart {
color: #ef4444;
animation: heartbeat 1.5s ease-in-out infinite;
}
@keyframes heartbeat {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.1); }
}
/* Responsive */
@media (max-width: 768px) {
.navbar-menu {
gap: 1rem;
}
.navbar-menu a {
padding: 0.5rem;
font-size: 0.9rem;
}
.page-header h1 {
font-size: 2rem;
}
.project-section {
padding: 2rem 1.5rem;
}
.project-header {
flex-direction: column;
text-align: center;
}
.project-title h2 {
font-size: 1.5rem;
}
}
</style>
</head>
<body>
<!-- Navigation -->
<nav class="navbar">
<div class="navbar-container">
<a href="index.html" class="navbar-brand">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"/>
</svg>
<span>RF</span>
</a>
<ul class="navbar-menu">
<li><a href="index.html">Accueil</a></li>
<li><a href="cv.html">CV</a></li>
<li><a href="projets.html" class="active">Projets</a></li>
</ul>
</div>
</nav>
<div class="container">
<!-- Page Header -->
<div class="page-header">
<h1>Mes Projets</h1>
<p>Découvrez mes réalisations personnelles dans le domaine de l'infrastructure, du développement et du modding</p>
</div>
<!-- Homelab Proxmox -->
<section id="homelab" class="project-section">
<div class="project-header">
<div class="project-icon">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2m-2-4h.01M17 16h.01"/>
</svg>
</div>
<div class="project-title">
<h2>Homelab Proxmox</h2>
<p class="project-subtitle">Infrastructure de virtualisation complète</p>
</div>
</div>
<div class="project-badges">
<span class="badge badge-primary">Infrastructure</span>
<span class="badge">Virtualisation</span>
<span class="badge">Réseaux</span>
<span class="badge">Sécurité</span>
</div>
<div class="project-description">
<p>Mon Homelab basé sur Proxmox VE est une infrastructure de virtualisation complète qui me permet d'héberger divers services, d'expérimenter de nouvelles technologies et de développer mes compétences en administration système. C'est un environnement d'apprentissage et de test pour les technologies de virtualisation, de conteneurisation et de réseautage.</p>
</div>
<div class="project-features">
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Virtualisation avancée</h4>
<p>Gestion de machines virtuelles Linux et Windows avec Proxmox VE</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Conteneurisation</h4>
<p>Déploiement de services avec LXC et Docker pour une isolation légère</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Réseautage complexe</h4>
<p>VLANs, bridges, et configuration réseau avancée</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Stockage et backup</h4>
<p>ZFS pour la gestion du stockage avec snapshots et réplications</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Services auto-hébergés</h4>
<p>DNS, surveillance, stockage cloud, bases de données, etc.</p>
</div>
</div>
</div>
<div class="tech-stack">
<span class="tech-item">Proxmox VE</span>
<span class="tech-item">Linux</span>
<span class="tech-item">Docker</span>
<span class="tech-item">LXC</span>
<span class="tech-item">ZFS</span>
<span class="tech-item">VLAN</span>
<span class="tech-item">Networking</span>
</div>
</section>
<!-- Boidelo -->
<section id="boidelo" class="project-section">
<div class="project-header">
<div class="project-icon">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z"/>
</svg>
</div>
<div class="project-title">
<h2>Boidelo</h2>
<p class="project-subtitle">Application Android de jeu d'alcool</p>
</div>
</div>
<div class="project-badges">
<span class="badge badge-primary">Android</span>
<span class="badge">Java</span>
<span class="badge">Material Design</span>
<span class="badge">Jeu</span>
</div>
<div class="project-description">
<p>Boidelo est une application Android de jeu d'alcool similaire à "King's Cup" ou "Never Have I Ever". L'application permet à un groupe de joueurs de répondre à des questions aléatoires avec des consommations de boissons associées. Elle inclut 150 questions préchargées, une interface Material Design 3, et des paramètres personnalisables.</p>
</div>
<div class="project-features">
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Jeu multijoueur</h4>
<p>Support de 3 à illimité de joueurs avec saisie dynamique des noms</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>150 questions préchargées</h4>
<p>Questions variées depuis un fichier JSON avec système de variantes</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Défis multi-manches</h4>
<p>Système de défis avec compte à rebours et gestion optimisée</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Paramètres personnalisables</h4>
<p>Nombre de questions, ajout de gorgées, durée des défis, ratio BDD/OpenAI</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Interface Material Design 3</h4>
<p>Design moderne avec animations fluides et support du mode sombre</p>
</div>
</div>
</div>
<div class="tech-stack">
<span class="tech-item">Android SDK</span>
<span class="tech-item">Java 17</span>
<span class="tech-item">Material Design 3</span>
<span class="tech-item">Gradle</span>
<span class="tech-item">JSON</span>
<span class="tech-item">PostgreSQL</span>
</div>
</section>
<!-- Custom Ore Gen -->
<section id="custom-ore-gen" class="project-section">
<div class="project-header">
<div class="project-icon">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z"/>
</svg>
</div>
<div class="project-title">
<h2>Custom Ore Gen</h2>
<p class="project-subtitle">Mod Minecraft 1.20.1 - Forge</p>
</div>
</div>
<div class="project-badges">
<span class="badge badge-primary">Minecraft</span>
<span class="badge">Forge</span>
<span class="badge">MCreator</span>
<span class="badge">Java</span>
</div>
<div class="project-description">
<p>Custom Ore Gen est un mod Minecraft développé avec MCreator pour Forge 1.20.1. Ce mod modifie la distribution des ressources en ajoutant de nouvelles variantes de minerais avec des drops configurables, des outils personnalisés, et une armure intermédiaire située entre le fer et le diamant. Il est conçu pour être utilisé avec KubeJS et Biomes O' Plenty.</p>
</div>
<div class="project-features">
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>16 nouveaux minerais</h4>
<p>Variantes de diamant, or, charbon, fer, émeraude, redstone, lapis et cuivre</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Distribution par biome</h4>
<p>Génération basée sur la température (froid, chaud, tempéré, montagneux, rare)</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Diamond Shards</h4>
<p>Nouveau resource pour outils et armure intermédiaires (9 shards = 1 diamant)</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Outils en Diamond Shard</h4>
<p>Pioche, pelle, hache et Paxel (outil combiné pioche+pelle+hache)</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Armure intermédiaire</h4>
<p>17 protection, 1060 durabilité (entre fer et diamant)</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Ore Biome Finder</h4>
<p>Utilitaire pour identifier les minerais présents dans le biome actuel</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Support Biomes O' Plenty</h4>
<p>69 biomes BOP supplémentaires classés par température</p>
</div>
</div>
</div>
<div class="tech-stack">
<span class="tech-item">Minecraft 1.20.1</span>
<span class="tech-item">Forge 47.3.0</span>
<span class="tech-item">MCreator</span>
<span class="tech-item">Java 17</span>
<span class="tech-item">KubeJS</span>
</div>
</section>
<!-- GeoRealmCraft -->
<section id="georealmcraft" class="project-section">
<div class="project-header">
<div class="project-icon">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
</svg>
</div>
<div class="project-title">
<h2>GeoRealmCraft</h2>
<p class="project-subtitle">Modpack Minecraft moddé</p>
</div>
</div>
<div class="project-badges">
<span class="badge badge-primary">Minecraft</span>
<span class="badge">Modpack</span>
<span class="badge">345 Mods</span>
<span class="badge">Serveur</span>
</div>
<div class="project-description">
<p>GeoRealmCraft est un modpack Minecraft révolutionnaire avec 345 mods qui transforme l'expérience de jeu. Le modpack offre une génération de monde épique avec une répartition réaliste des ressources, des graphismes retravaillés, et des fonctionnalités avancées comme les colonies, les machineries Create, et les véhicules.</p>
</div>
<div class="project-features">
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Génération de monde épique</h4>
<p>Immensité des biomes, verticalité des massifs, répartition réaliste des ressources</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>345 mods</h4>
<p>Graphisme, audio, animation retravaillés avec des mods d'ambiance</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Système de colonies</h4>
<p>Colonies évolutives avec Minecolonies pour gérer des NPC</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Machineries Create 6.0</h4>
<p>Système d'automation avancé avec Create pour créer des usines complexes</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Véhicules</h4>
<p>Trains, avions, voitures, bateaux pour explorer le monde</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Nourriture stratégique</h4>
<p>Système de nutrition nécessitant une alimentation variée et équilibrée</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Combat tactique</h4>
<p>Refonte complète du système de combat avec styles d'attaques</p>
</div>
</div>
<div class="feature-item">
<svg class="feature-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
</svg>
<div class="feature-content">
<h4>Économie dynamique</h4>
<p>Marché basé sur les joueurs avec monnaie non duplicable</p>
</div>
</div>
</div>
<div class="tech-stack">
<span class="tech-item">Minecraft</span>
<span class="tech-item">Forge</span>
<span class="tech-item">Create</span>
<span class="tech-item">Minecolonies</span>
<span class="tech-item">Biomes O' Plenty</span>
</div>
</section>
</div>
<!-- Footer -->
<footer class="footer">
<div class="container">
<p>© 2025 Roman Felden · Fait avec <span class="footer-heart"></span> à Grenoble, France</p>
<p style="margin-top: 0.5rem; font-size: 0.9rem; opacity: 0.8;">
<a href="index.html" style="color: white; text-decoration: none; opacity: 0.8;">Retour à l'accueil</a>
</p>
</div>
</footer>
</body>
</html>
+8
View File
@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
+59
View File
@@ -0,0 +1,59 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<HTMLCodeStyleSettings>
<option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
</HTMLCodeStyleSettings>
<JSCodeStyleSettings version="0">
<option name="FORCE_SEMICOLON_STYLE" value="true" />
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
<option name="USE_DOUBLE_QUOTES" value="false" />
<option name="FORCE_QUOTE_STYlE" value="true" />
<option name="ENFORCE_TRAILING_COMMA" value="Remove" />
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
<option name="SPACES_WITHIN_IMPORTS" value="true" />
</JSCodeStyleSettings>
<TypeScriptCodeStyleSettings version="0">
<option name="FORCE_SEMICOLON_STYLE" value="true" />
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
<option name="USE_DOUBLE_QUOTES" value="false" />
<option name="FORCE_QUOTE_STYlE" value="true" />
<option name="ENFORCE_TRAILING_COMMA" value="Remove" />
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
<option name="SPACES_WITHIN_IMPORTS" value="true" />
</TypeScriptCodeStyleSettings>
<VueCodeStyleSettings>
<option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
<option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
</VueCodeStyleSettings>
<codeStyleSettings language="HTML">
<option name="SOFT_MARGINS" value="80" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="JavaScript">
<option name="SOFT_MARGINS" value="80" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="TypeScript">
<option name="SOFT_MARGINS" value="80" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="Vue">
<option name="SOFT_MARGINS" value="80" />
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
</code_scheme>
</component>
+5
View File
@@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>
+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/georealmscraftweb.iml" filepath="$PROJECT_DIR$/.idea/georealmscraftweb.iml" />
</modules>
</component>
</project>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PrettierConfiguration">
<option name="myConfigurationMode" value="AUTOMATIC" />
</component>
</project>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
File diff suppressed because one or more lines are too long
@@ -0,0 +1,21 @@
/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */*,::after,::before{box-sizing:border-box}html{-moz-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}body{font-family:system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji'}hr{height:0;color:inherit}abbr[title]{text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,'Liberation Mono',Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}
/*
FILE ARCHIVED ON 16:47:06 May 20, 2024 AND RETRIEVED FROM THE
INTERNET ARCHIVE ON 15:15:39 Mar 27, 2025.
JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.
ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
SECTION 108(a)(3)).
*/
/*
playback timings (ms):
captures_list: 0.508
exclusion.robots: 0.024
exclusion.robots.policy: 0.011
esindex: 0.012
cdx.remote: 24.784
LoadShardBlock: 203.681 (3)
PetaboxLoader3.datanode: 211.028 (5)
load_resource: 901.208 (2)
PetaboxLoader3.resolve: 790.541 (2)
*/
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 411 KiB

File diff suppressed because one or more lines are too long
+508
View File
@@ -0,0 +1,508 @@
:root {
--wm-toolbar-height: 65px;
}
#wm-ipp-base {
height:65px;/* initial height just in case js code fails */
padding:0;
margin:0;
border:none;
background:none transparent;
}
#wm-ipp {
z-index: 2147483647;
}
#wm-ipp, #wm-ipp * {
font-family:Lucida Grande, Helvetica, Arial, sans-serif;
font-size:12px;
line-height:1.2;
letter-spacing:0;
width:auto;
height:auto;
max-width:none;
max-height:none;
min-width:0 !important;
min-height:0;
outline:none;
float:none;
text-align:left;
border:none;
color: #000;
text-indent: 0;
position: initial;
background: none;
}
#wm-ipp div, #wm-ipp canvas {
display: block;
}
#wm-ipp div, #wm-ipp tr, #wm-ipp td, #wm-ipp a, #wm-ipp form {
padding:0;
margin:0;
border:none;
border-radius:0;
background-color:transparent;
background-image:none;
/*z-index:2147483640;*/
height:auto;
}
#wm-ipp table {
border:none;
border-collapse:collapse;
margin:0;
padding:0;
width:auto;
font-size:inherit;
}
#wm-ipp form input {
padding:1px !important;
height:auto;
display:inline;
margin:0;
color: #000;
background: none #fff;
border: 1px solid #666;
}
#wm-ipp form input[type=submit] {
padding:0 8px !important;
margin:1px 0 1px 5px !important;
width:auto !important;
border: 1px solid #000 !important;
background: #fff !important;
color: #000 !important;
}
#wm-ipp form input[type=submit]:hover {
background: #eee !important;
cursor: pointer !important;
}
#wm-ipp form input[type=submit]:active {
transform: translateY(1px);
}
#wm-ipp a {
display: inline;
}
#wm-ipp a:hover{
text-decoration:underline;
}
#wm-ipp a.wm-btn:hover {
text-decoration:none;
color:#ff0 !important;
}
#wm-ipp a.wm-btn:hover span {
color:#ff0 !important;
}
#wm-ipp #wm-ipp-inside {
margin: 0 6px;
border:5px solid #000;
border-top:none;
background-color:rgba(255,255,255,0.9);
-moz-box-shadow:1px 1px 4px #333;
-webkit-box-shadow:1px 1px 4px #333;
box-shadow:1px 1px 4px #333;
border-radius:0 0 8px 8px;
}
/* selectors are intentionally verbose to ensure priority */
#wm-ipp #wm-logo {
padding:0 10px;
vertical-align:middle;
min-width:100px;
flex: 0 0 100px;
}
#wm-ipp .c {
padding-left: 4px;
}
#wm-ipp .c .u {
margin-top: 4px !important;
}
#wm-ipp .n {
padding:0 0 0 5px !important;
vertical-align: bottom;
}
#wm-ipp .n a {
text-decoration:none;
color:#33f;
font-weight:bold;
}
#wm-ipp .n .b {
padding:0 6px 0 0 !important;
text-align:right !important;
overflow:visible;
white-space:nowrap;
color:#99a;
vertical-align:middle;
}
#wm-ipp .n .y .b {
padding:0 6px 2px 0 !important;
}
#wm-ipp .n .c {
background:#000;
color:#ff0;
font-weight:bold;
padding:0 !important;
text-align:center;
}
#wm-ipp.hi .n td.c {
color:#ec008c;
}
#wm-ipp .n td.f {
padding:0 0 0 6px !important;
text-align:left !important;
overflow:visible;
white-space:nowrap;
color:#99a;
vertical-align:middle;
}
#wm-ipp .n tr.m td {
text-transform:uppercase;
white-space:nowrap;
padding:2px 0;
}
#wm-ipp .c .s {
padding:0 5px 0 0 !important;
vertical-align:bottom;
}
#wm-ipp #wm-nav-captures {
white-space: nowrap;
}
#wm-ipp .c .s a.t {
color:#33f;
font-weight:bold;
line-height: 1.8;
}
#wm-ipp .c .s div.r {
color: #666;
font-size:9px;
white-space:nowrap;
}
#wm-ipp .c .k {
padding-bottom:1px;
}
#wm-ipp .c .s {
padding:0 5px 2px 0 !important;
}
#wm-ipp td#displayMonthEl {
padding: 2px 0 !important;
}
#wm-ipp td#displayYearEl {
padding: 0 0 2px 0 !important;
}
div#wm-ipp-sparkline {
position:relative;/* for positioning markers */
white-space:nowrap;
background-color:#fff;
cursor:pointer;
line-height:0.9;
}
#sparklineImgId, #wm-sparkline-canvas {
position:relative;
z-index:9012;
max-width:none;
}
#wm-ipp-sparkline div.yt {
position:absolute;
z-index:9010 !important;
background-color:#ff0 !important;
top: 0;
}
#wm-ipp-sparkline div.mt {
position:absolute;
z-index:9013 !important;
background-color:#ec008c !important;
top: 0;
}
#wm-ipp .r {
margin-left: 4px;
}
#wm-ipp .r a {
color:#33f;
border:none;
position:relative;
background-color:transparent;
background-repeat:no-repeat !important;
background-position:100% 100% !important;
text-decoration: none;
}
#wm-ipp #wm-capinfo {
/* prevents notice div background from sticking into round corners of
#wm-ipp-inside */
border-radius: 0 0 4px 4px;
}
#wm-ipp #wm-capinfo .c-logo {
display:block;
float:left;
margin-right:3px;
width:90px;
min-height:90px;
max-height: 290px;
border-radius:45px;
overflow:hidden;
background-position:50%;
background-size:auto 90px;
box-shadow: 0 0 2px 2px rgba(208,208,208,128) inset;
}
#wm-ipp #wm-capinfo .c-logo span {
display:inline-block;
}
#wm-ipp #wm-capinfo .c-logo img {
height:90px;
position:relative;
left:-50%;
}
#wm-ipp #wm-capinfo .wm-title {
font-size:130%;
}
#wm-ipp #wm-capinfo a.wm-selector {
display:inline-block;
color: #aaa;
text-decoration:none !important;
padding: 2px 8px;
}
#wm-ipp #wm-capinfo a.wm-selector.selected {
background-color:#666;
}
#wm-ipp #wm-capinfo a.wm-selector:hover {
color: #fff;
}
#wm-ipp #wm-capinfo.notice-only #wm-capinfo-collected-by,
#wm-ipp #wm-capinfo.notice-only #wm-capinfo-timestamps {
display: none;
}
#wm-ipp #wm-capinfo #wm-capinfo-notice .wm-capinfo-content {
background-color:#ff0;
padding:5px;
font-size:14px;
text-align:center;
}
#wm-ipp #wm-capinfo #wm-capinfo-notice .wm-capinfo-content * {
font-size:14px;
text-align:center;
}
#wm-ipp #wm-expand {
right: 1px;
bottom: -1px;
color: #ffffff;
background-color: #666 !important;
padding:0 5px 0 3px !important;
border-radius: 3px 3px 0 0 !important;
}
#wm-ipp #wm-expand span {
color: #ffffff;
}
#wm-ipp #wm-expand #wm-expand-icon {
display: inline-block;
transition: transform 0.5s;
transform-origin: 50% 45%;
}
#wm-ipp #wm-expand.wm-open #wm-expand-icon {
transform: rotate(180deg);
}
#wm-ipp #wmtb {
text-align:right;
}
#wm-ipp #wmtb #wmtbURL {
width: calc(100% - 45px);
}
#wm-ipp #wm-graph-anchor {
border-right:1px solid #ccc;
}
/* time coherence */
html.wb-highlight {
box-shadow: inset 0 0 0 3px #a50e3a !important;
}
.wb-highlight {
outline: 3px solid #a50e3a !important;
}
#wm-ipp-print {
display:none !important;
}
@media print {
#wm-ipp-base {
display:none !important;
}
#wm-ipp-print {
display:block !important;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
@media (max-width:414px) {
#wm-ipp .xxs {
display:none !important;
}
}
@media (min-width:1055px) {
#wm-ipp #wm-graph-anchor {
display:block !important;
}
}
@media (max-width:1054px) {
#wm-ipp #wm-graph-anchor {
display:none !important;
}
}
@media (max-width:1163px) {
#wm-logo {
display:none !important;
}
}
#wm-btns {
white-space: nowrap;
margin-top: -2px;
}
#wm-btns #wm-save-snapshot-open {
margin-right: 7px;
top: -6px;
}
#wm-btns #wm-sign-in {
box-sizing: content-box;
display: none;
margin-right: 7px;
top: -8px;
/*
round border around sign in button
*/
border: 2px #000 solid;
border-radius: 14px;
padding-right: 2px;
padding-bottom: 2px;
width: 11px;
height: 11px;
}
#wm-btns #wm-sign-in>.iconochive-person {
font-size: 12.5px;
}
#wm-save-snapshot-open > .iconochive-web {
color:#000;
font-size:160%;
}
#wm-ipp #wm-share {
display: flex;
align-items: flex-end;
justify-content: space-between;
}
#wm-share > #wm-screenshot {
display: inline-block;
margin-right: 3px;
visibility: hidden;
}
#wm-screenshot > .iconochive-image {
color:#000;
font-size:160%;
}
#wm-share > #wm-video {
display: inline-block;
margin-right: 3px;
visibility: hidden;
}
#wm-video > .iconochive-movies {
color: #000;
display: inline-block;
font-size: 150%;
margin-bottom: 2px;
}
#wm-btns #wm-save-snapshot-in-progress {
display: none;
font-size:160%;
opacity: 0.5;
position: relative;
margin-right: 7px;
top: -5px;
}
#wm-btns #wm-save-snapshot-success {
display: none;
color: green;
position: relative;
top: -7px;
}
#wm-btns #wm-save-snapshot-fail {
display: none;
color: red;
position: relative;
top: -7px;
}
.wm-icon-screen-shot {
background: url("../../../external.html?link=https://web-static.archive.org/_static/images/web-screenshot.svg") no-repeat !important;
background-size: contain !important;
width: 22px !important;
height: 19px !important;
display: inline-block;
}
#donato {
/* transition effect is disable so as to simplify height adjustment */
/*transition: height 0.5s;*/
height: 0;
margin: 0;
padding: 0;
border-bottom: 1px solid #999 !important;
}
body.wm-modal {
height: auto !important;
overflow: hidden !important;
}
#donato #donato-base {
width: 100%;
height: 100%;
/*bottom: 0;*/
margin: 0;
padding: 0;
position: absolute;
z-index: 2147483639;
}
body.wm-modal #donato #donato-base {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 2147483640;
}
.wb-autocomplete-suggestions {
font-family: Lucida Grande, Helvetica, Arial, sans-serif;
font-size: 12px;
text-align: left;
cursor: default;
border: 1px solid #ccc;
border-top: 0;
background: #fff;
box-shadow: -1px 1px 3px rgba(0,0,0,.1);
position: absolute;
display: none;
z-index: 2147483647;
max-height: 254px;
overflow: hidden;
overflow-y: auto;
box-sizing: border-box;
}
.wb-autocomplete-suggestion {
position: relative;
padding: 0 .6em;
line-height: 23px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-size: 1.02em;
color: #333;
}
.wb-autocomplete-suggestion b {
font-weight: bold;
}
.wb-autocomplete-suggestion.selected {
background: #f0f0f0;
}
+116
View File
@@ -0,0 +1,116 @@
@font-face{font-family:'Iconochive-Regular';src:url('../../../external.html?link=https://web-static.archive.org/_static/fonts/Iconochive-Regular.eot');src:url('../../../external.html?link=https://web-static.archive.org/_static/fonts/Iconochive-Regular.eot') format('embedded-opentype'),url('../../../external.html?link=https://web-static.archive.org/_static/fonts/Iconochive-Regular.woff') format('woff'),url('../../../external.html?link=https://web-static.archive.org/_static/fonts/Iconochive-Regular.ttf') format('truetype'),url('../../../external.html?link=https://web-static.archive.org/_static/fonts/Iconochive-Regular.svg#Iconochive-Regular') format('svg');font-weight:normal;font-style:normal}
[class^="iconochive-"],[class*=" iconochive-"]{font-family:'Iconochive-Regular'!important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
.iconochive-Uplevel:before{content:"\21b5"}
.iconochive-exit:before{content:"\1f6a3"}
.iconochive-beta:before{content:"\3b2"}
.iconochive-logo:before{content:"\1f3db"}
.iconochive-audio:before{content:"\1f568"}
.iconochive-movies:before{content:"\1f39e"}
.iconochive-software:before{content:"\1f4be"}
.iconochive-texts:before{content:"\1f56e"}
.iconochive-etree:before{content:"\1f3a4"}
.iconochive-image:before{content:"\1f5bc"}
.iconochive-web:before{content:"\1f5d4"}
.iconochive-collection:before{content:"\2211"}
.iconochive-folder:before{content:"\1f4c2"}
.iconochive-data:before{content:"\1f5c3"}
.iconochive-tv:before{content:"\1f4fa"}
.iconochive-article:before{content:"\1f5cf"}
.iconochive-question:before{content:"\2370"}
.iconochive-question-dark:before{content:"\3f"}
.iconochive-info:before{content:"\69"}
.iconochive-info-small:before{content:"\24d8"}
.iconochive-comment:before{content:"\1f5e9"}
.iconochive-comments:before{content:"\1f5ea"}
.iconochive-person:before{content:"\1f464"}
.iconochive-people:before{content:"\1f465"}
.iconochive-eye:before{content:"\1f441"}
.iconochive-rss:before{content:"\221e"}
.iconochive-time:before{content:"\1f551"}
.iconochive-quote:before{content:"\275d"}
.iconochive-disc:before{content:"\1f4bf"}
.iconochive-tv-commercial:before{content:"\1f4b0"}
.iconochive-search:before{content:"\1f50d"}
.iconochive-search-star:before{content:"\273d"}
.iconochive-tiles:before{content:"\229e"}
.iconochive-list:before{content:"\21f6"}
.iconochive-list-bulleted:before{content:"\2317"}
.iconochive-latest:before{content:"\2208"}
.iconochive-left:before{content:"\2c2"}
.iconochive-right:before{content:"\2c3"}
.iconochive-left-solid:before{content:"\25c2"}
.iconochive-right-solid:before{content:"\25b8"}
.iconochive-up-solid:before{content:"\25b4"}
.iconochive-down-solid:before{content:"\25be"}
.iconochive-dot:before{content:"\23e4"}
.iconochive-dots:before{content:"\25a6"}
.iconochive-columns:before{content:"\25af"}
.iconochive-sort:before{content:"\21d5"}
.iconochive-atoz:before{content:"\1f524"}
.iconochive-ztoa:before{content:"\1f525"}
.iconochive-upload:before{content:"\1f4e4"}
.iconochive-download:before{content:"\1f4e5"}
.iconochive-favorite:before{content:"\2605"}
.iconochive-heart:before{content:"\2665"}
.iconochive-play:before{content:"\25b6"}
.iconochive-play-framed:before{content:"\1f3ac"}
.iconochive-fullscreen:before{content:"\26f6"}
.iconochive-mute:before{content:"\1f507"}
.iconochive-unmute:before{content:"\1f50a"}
.iconochive-share:before{content:"\1f381"}
.iconochive-edit:before{content:"\270e"}
.iconochive-reedit:before{content:"\2710"}
.iconochive-gear:before{content:"\2699"}
.iconochive-remove-circle:before{content:"\274e"}
.iconochive-plus-circle:before{content:"\1f5d6"}
.iconochive-minus-circle:before{content:"\1f5d5"}
.iconochive-x:before{content:"\1f5d9"}
.iconochive-fork:before{content:"\22d4"}
.iconochive-trash:before{content:"\1f5d1"}
.iconochive-warning:before{content:"\26a0"}
.iconochive-flash:before{content:"\1f5f2"}
.iconochive-world:before{content:"\1f5fa"}
.iconochive-lock:before{content:"\1f512"}
.iconochive-unlock:before{content:"\1f513"}
.iconochive-twitter:before{content:"\1f426"}
.iconochive-facebook:before{content:"\66"}
.iconochive-googleplus:before{content:"\67"}
.iconochive-reddit:before{content:"\1f47d"}
.iconochive-tumblr:before{content:"\54"}
.iconochive-pinterest:before{content:"\1d4df"}
.iconochive-popcorn:before{content:"\1f4a5"}
.iconochive-email:before{content:"\1f4e7"}
.iconochive-embed:before{content:"\1f517"}
.iconochive-gamepad:before{content:"\1f579"}
.iconochive-Zoom_In:before{content:"\2b"}
.iconochive-Zoom_Out:before{content:"\2d"}
.iconochive-RSS:before{content:"\1f4e8"}
.iconochive-Light_Bulb:before{content:"\1f4a1"}
.iconochive-Add:before{content:"\2295"}
.iconochive-Tab_Activity:before{content:"\2318"}
.iconochive-Forward:before{content:"\23e9"}
.iconochive-Backward:before{content:"\23ea"}
.iconochive-No_Audio:before{content:"\1f508"}
.iconochive-Pause:before{content:"\23f8"}
.iconochive-No_Favorite:before{content:"\2606"}
.iconochive-Unike:before{content:"\2661"}
.iconochive-Song:before{content:"\266b"}
.iconochive-No_Flag:before{content:"\2690"}
.iconochive-Flag:before{content:"\2691"}
.iconochive-Done:before{content:"\2713"}
.iconochive-Check:before{content:"\2714"}
.iconochive-Refresh:before{content:"\27f3"}
.iconochive-Headphones:before{content:"\1f3a7"}
.iconochive-Chart:before{content:"\1f4c8"}
.iconochive-Bookmark:before{content:"\1f4d1"}
.iconochive-Documents:before{content:"\1f4da"}
.iconochive-Newspaper:before{content:"\1f4f0"}
.iconochive-Podcast:before{content:"\1f4f6"}
.iconochive-Radio:before{content:"\1f4fb"}
.iconochive-Cassette:before{content:"\1f4fc"}
.iconochive-Shuffle:before{content:"\1f500"}
.iconochive-Loop:before{content:"\1f501"}
.iconochive-Low_Audio:before{content:"\1f509"}
.iconochive-First:before{content:"\1f396"}
.iconochive-Invisible:before{content:"\1f576"}
.iconochive-Computer:before{content:"\1f5b3"}
+1
View File
@@ -0,0 +1 @@
<html><head><title>C:\Users\Administrateur\WebstormProjects\georealmscraftweb</title></head><body><a href="index.html.html">index.html</a><br /><a href="postule.html.html">postule.html</a><br /></body></html>
+393
View File
@@ -0,0 +1,393 @@
<html>
<head>
<title>index.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
.s0 { color: #d5b778;}
.s1 { color: #bcbec4;}
.s2 { color: #bababa;}
.s3 { color: #6aab73;}
.s4 { color: #56a8f5;}
.s5 { color: #2aacb8;}
.s6 { color: #7a7e85;}
.s7 { color: #cf8e6d;}
</style>
</head>
<body bgcolor="#1e1f22">
<table CELLSPACING=0 CELLPADDING=5 COLS=1 WIDTH="100%" BGCOLOR="#606060" >
<tr><td><center>
<font face="Arial, Helvetica" color="#000000">
index.html</font>
</center></td></tr></table>
<pre><span class="s0">&lt;!DOCTYPE </span><span class="s2">html</span><span class="s0">&gt;</span>
<span class="s0">&lt;html </span><span class="s2">lang</span><span class="s3">=&quot;fr&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;head&gt;</span>
<span class="s0">&lt;meta </span><span class="s2">charset</span><span class="s3">=&quot;UTF-8&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;meta </span><span class="s2">name</span><span class="s3">=&quot;viewport&quot; </span><span class="s2">content</span><span class="s3">=&quot;width=device-width, initial-scale=1.0&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;title&gt;</span><span class="s1">Geo Realms Craft - Serveur Minecraft Moddé</span><span class="s0">&lt;/title&gt;</span>
<span class="s0">&lt;link </span><span class="s2">href</span><span class="s3">=&quot;https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css&quot; </span><span class="s2">rel</span><span class="s3">=&quot;stylesheet&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;link </span><span class="s2">rel</span><span class="s3">=&quot;stylesheet&quot; </span><span class="s2">href</span><span class="s3">=&quot;https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;style&gt;</span>
<span class="s1">:</span><span class="s0">root </span><span class="s1">{</span>
<span class="s2">--primary-color</span><span class="s1">: </span><span class="s4">#760202</span><span class="s1">;</span>
<span class="s2">--secondary-color</span><span class="s1">: </span><span class="s4">#2c2c2c</span><span class="s1">;</span>
<span class="s2">--accent-color</span><span class="s1">: </span><span class="s4">#9d0b28</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s0">body </span><span class="s1">{</span>
<span class="s2">font-family</span><span class="s1">: </span><span class="s3">'Roboto'</span><span class="s1">, </span><span class="s3">sans-serif</span><span class="s1">;</span>
<span class="s2">background</span><span class="s1">: </span><span class="s4">#f8f9fa</span><span class="s1">;</span>
<span class="s2">color</span><span class="s1">: </span><span class="s4">#333</span><span class="s1">;</span>
<span class="s2">line-height</span><span class="s1">: </span><span class="s5">1.6</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">hero </span><span class="s1">{</span>
<span class="s2">background</span><span class="s1">: </span><span class="s0">linear-gradient</span><span class="s1">(</span><span class="s5">45</span><span class="s3">deg</span><span class="s1">, </span><span class="s0">rgba</span><span class="s1">(</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0.9</span><span class="s1">), </span><span class="s0">rgba</span><span class="s1">(</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0.7</span><span class="s1">)), </span><span class="s0">url</span><span class="s1">(</span><span class="s3">'background/0.jpg'</span><span class="s1">);</span>
<span class="s2">background-size</span><span class="s1">: </span><span class="s3">cover</span><span class="s1">;</span>
<span class="s2">background-position</span><span class="s1">: </span><span class="s3">center</span><span class="s1">;</span>
<span class="s2">min-height</span><span class="s1">: </span><span class="s5">100</span><span class="s3">vh</span><span class="s1">;</span>
<span class="s2">display</span><span class="s1">: </span><span class="s3">flex</span><span class="s1">;</span>
<span class="s2">align-items</span><span class="s1">: </span><span class="s3">center</span><span class="s1">;</span>
<span class="s2">justify-content</span><span class="s1">: </span><span class="s3">center</span><span class="s1">;</span>
<span class="s2">text-align</span><span class="s1">: </span><span class="s3">center</span><span class="s1">;</span>
<span class="s2">color</span><span class="s1">: </span><span class="s3">white</span><span class="s1">;</span>
<span class="s2">position</span><span class="s1">: </span><span class="s3">relative</span><span class="s1">;</span>
<span class="s2">overflow</span><span class="s1">: </span><span class="s3">hidden</span><span class="s1">;</span>
<span class="s2">padding</span><span class="s1">: </span><span class="s5">20</span><span class="s3">px</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">hero</span><span class="s1">::</span><span class="s0">after </span><span class="s1">{</span>
<span class="s2">content</span><span class="s1">: </span><span class="s3">''</span><span class="s1">;</span>
<span class="s2">position</span><span class="s1">: </span><span class="s3">absolute</span><span class="s1">;</span>
<span class="s2">bottom</span><span class="s1">: -</span><span class="s5">50</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">left</span><span class="s1">: -</span><span class="s5">5</span><span class="s1">%;</span>
<span class="s2">width</span><span class="s1">: </span><span class="s5">110</span><span class="s1">%;</span>
<span class="s2">height</span><span class="s1">: </span><span class="s5">100</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">background</span><span class="s1">: </span><span class="s0">var</span><span class="s1">(</span><span class="s0">--primary-color</span><span class="s1">);</span>
<span class="s2">transform</span><span class="s1">: </span><span class="s0">rotate</span><span class="s1">(-</span><span class="s5">3</span><span class="s3">deg</span><span class="s1">);</span>
<span class="s2">z-index</span><span class="s1">: </span><span class="s5">1</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">nav-wrapper </span><span class="s1">{</span>
<span class="s2">background</span><span class="s1">: </span><span class="s0">var</span><span class="s1">(</span><span class="s0">--secondary-color</span><span class="s1">);</span>
<span class="s2">position</span><span class="s1">: </span><span class="s3">sticky</span><span class="s1">;</span>
<span class="s2">top</span><span class="s1">: </span><span class="s5">0</span><span class="s1">;</span>
<span class="s2">z-index</span><span class="s1">: </span><span class="s5">1000</span><span class="s1">;</span>
<span class="s2">box-shadow</span><span class="s1">: </span><span class="s5">0 2</span><span class="s3">px </span><span class="s5">5</span><span class="s3">px </span><span class="s0">rgba</span><span class="s1">(</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0.1</span><span class="s1">);</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">section </span><span class="s1">{</span>
<span class="s2">padding</span><span class="s1">: </span><span class="s5">80</span><span class="s3">px </span><span class="s5">20</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">opacity</span><span class="s1">: </span><span class="s5">0</span><span class="s1">;</span>
<span class="s2">transform</span><span class="s1">: </span><span class="s0">translateY</span><span class="s1">(</span><span class="s5">30</span><span class="s3">px</span><span class="s1">);</span>
<span class="s2">transition</span><span class="s1">: </span><span class="s3">all </span><span class="s5">0.8</span><span class="s3">s </span><span class="s0">cubic-bezier</span><span class="s1">(</span><span class="s5">0.4</span><span class="s1">, </span><span class="s5">0</span><span class="s1">, </span><span class="s5">0.2</span><span class="s1">, </span><span class="s5">1</span><span class="s1">);</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">section</span><span class="s1">.</span><span class="s0">visible </span><span class="s1">{</span>
<span class="s2">opacity</span><span class="s1">: </span><span class="s5">1</span><span class="s1">;</span>
<span class="s2">transform</span><span class="s1">: </span><span class="s0">translateY</span><span class="s1">(</span><span class="s5">0</span><span class="s1">);</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">highlight-card </span><span class="s1">{</span>
<span class="s2">border-radius</span><span class="s1">: </span><span class="s5">15</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">padding</span><span class="s1">: </span><span class="s5">30</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">margin</span><span class="s1">: </span><span class="s5">20</span><span class="s3">px </span><span class="s5">0</span><span class="s1">;</span>
<span class="s2">background</span><span class="s1">: </span><span class="s3">white</span><span class="s1">;</span>
<span class="s2">box-shadow</span><span class="s1">: </span><span class="s5">0 10</span><span class="s3">px </span><span class="s5">30</span><span class="s3">px </span><span class="s0">rgba</span><span class="s1">(</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0.08</span><span class="s1">);</span>
<span class="s2">border-left</span><span class="s1">: </span><span class="s5">5</span><span class="s3">px solid </span><span class="s0">var</span><span class="s1">(</span><span class="s0">--accent-color</span><span class="s1">);</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">rule-category </span><span class="s1">{</span>
<span class="s2">padding</span><span class="s1">: </span><span class="s5">25</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">margin</span><span class="s1">: </span><span class="s5">30</span><span class="s3">px </span><span class="s5">0</span><span class="s1">;</span>
<span class="s2">background</span><span class="s1">: </span><span class="s3">white</span><span class="s1">;</span>
<span class="s2">border-radius</span><span class="s1">: </span><span class="s5">12</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">box-shadow</span><span class="s1">: </span><span class="s5">0 5</span><span class="s3">px </span><span class="s5">15</span><span class="s3">px </span><span class="s0">rgba</span><span class="s1">(</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0.06</span><span class="s1">);</span>
<span class="s2">transition</span><span class="s1">: </span><span class="s3">all </span><span class="s5">0.3</span><span class="s3">s ease</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">rule-category</span><span class="s1">:</span><span class="s0">hover </span><span class="s1">{</span>
<span class="s2">transform</span><span class="s1">: </span><span class="s0">translateY</span><span class="s1">(-</span><span class="s5">5</span><span class="s3">px</span><span class="s1">);</span>
<span class="s2">box-shadow</span><span class="s1">: </span><span class="s5">0 10</span><span class="s3">px </span><span class="s5">25</span><span class="s3">px </span><span class="s0">rgba</span><span class="s1">(</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0.12</span><span class="s1">);</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">news-timeline </span><span class="s1">{</span>
<span class="s2">position</span><span class="s1">: </span><span class="s3">relative</span><span class="s1">;</span>
<span class="s2">padding-left</span><span class="s1">: </span><span class="s5">30</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">border-left</span><span class="s1">: </span><span class="s5">3</span><span class="s3">px solid </span><span class="s0">var</span><span class="s1">(</span><span class="s0">--accent-color</span><span class="s1">);</span>
<span class="s2">margin-left</span><span class="s1">: </span><span class="s5">15</span><span class="s3">px</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">news-item </span><span class="s1">{</span>
<span class="s2">position</span><span class="s1">: </span><span class="s3">relative</span><span class="s1">;</span>
<span class="s2">padding</span><span class="s1">: </span><span class="s5">25</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">margin-bottom</span><span class="s1">: </span><span class="s5">40</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">background</span><span class="s1">: </span><span class="s3">white</span><span class="s1">;</span>
<span class="s2">border-radius</span><span class="s1">: </span><span class="s5">10</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">box-shadow</span><span class="s1">: </span><span class="s5">0 3</span><span class="s3">px </span><span class="s5">6</span><span class="s3">px </span><span class="s0">rgba</span><span class="s1">(</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0.05</span><span class="s1">);</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">news-item</span><span class="s1">::</span><span class="s0">before </span><span class="s1">{</span>
<span class="s2">content</span><span class="s1">: </span><span class="s3">''</span><span class="s1">;</span>
<span class="s2">position</span><span class="s1">: </span><span class="s3">absolute</span><span class="s1">;</span>
<span class="s2">left</span><span class="s1">: -</span><span class="s5">38</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">top</span><span class="s1">: </span><span class="s5">25</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">width</span><span class="s1">: </span><span class="s5">20</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">height</span><span class="s1">: </span><span class="s5">20</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">background</span><span class="s1">: </span><span class="s0">var</span><span class="s1">(</span><span class="s0">--accent-color</span><span class="s1">);</span>
<span class="s2">border-radius</span><span class="s1">: </span><span class="s5">50</span><span class="s1">%;</span>
<span class="s2">border</span><span class="s1">: </span><span class="s5">3</span><span class="s3">px solid white</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">cta-button </span><span class="s1">{</span>
<span class="s2">display</span><span class="s1">: </span><span class="s3">inline-flex</span><span class="s1">;</span>
<span class="s2">align-items</span><span class="s1">: </span><span class="s3">center</span><span class="s1">;</span>
<span class="s2">padding</span><span class="s1">: </span><span class="s5">16</span><span class="s3">px </span><span class="s5">45</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">background</span><span class="s1">: </span><span class="s0">var</span><span class="s1">(</span><span class="s0">--primary-color</span><span class="s1">);</span>
<span class="s2">color</span><span class="s1">: </span><span class="s3">white</span><span class="s1">;</span>
<span class="s2">border-radius</span><span class="s1">: </span><span class="s5">50</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">text-decoration</span><span class="s1">: </span><span class="s3">none</span><span class="s1">;</span>
<span class="s2">transition</span><span class="s1">: </span><span class="s3">all </span><span class="s5">0.3</span><span class="s3">s ease</span><span class="s1">;</span>
<span class="s2">font-weight</span><span class="s1">: </span><span class="s5">600</span><span class="s1">;</span>
<span class="s2">text-transform</span><span class="s1">: </span><span class="s3">uppercase</span><span class="s1">;</span>
<span class="s2">letter-spacing</span><span class="s1">: </span><span class="s5">1</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">gap</span><span class="s1">: </span><span class="s5">10</span><span class="s3">px</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">cta-button</span><span class="s1">:</span><span class="s0">hover </span><span class="s1">{</span>
<span class="s2">transform</span><span class="s1">: </span><span class="s0">translateY</span><span class="s1">(-</span><span class="s5">2</span><span class="s3">px</span><span class="s1">);</span>
<span class="s2">box-shadow</span><span class="s1">: </span><span class="s5">0 8</span><span class="s3">px </span><span class="s5">20</span><span class="s3">px </span><span class="s0">rgba</span><span class="s1">(</span><span class="s5">118</span><span class="s1">, </span><span class="s5">2</span><span class="s1">, </span><span class="s5">2</span><span class="s1">, </span><span class="s5">0.3</span><span class="s1">);</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">icon </span><span class="s1">{</span>
<span class="s2">width</span><span class="s1">: </span><span class="s5">24</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">height</span><span class="s1">: </span><span class="s5">24</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">fill</span><span class="s1">: </span><span class="s3">currentColor</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s0">footer </span><span class="s1">{</span>
<span class="s2">background</span><span class="s1">: </span><span class="s0">var</span><span class="s1">(</span><span class="s0">--secondary-color</span><span class="s1">);</span>
<span class="s2">color</span><span class="s1">: </span><span class="s3">white</span><span class="s1">;</span>
<span class="s2">padding</span><span class="s1">: </span><span class="s5">60</span><span class="s3">px </span><span class="s5">0</span><span class="s1">;</span>
<span class="s2">text-align</span><span class="s1">: </span><span class="s3">center</span><span class="s1">;</span>
<span class="s2">margin-top</span><span class="s1">: </span><span class="s5">80</span><span class="s3">px</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s0">&lt;/style&gt;</span>
<span class="s0">&lt;/head&gt;</span>
<span class="s0">&lt;body&gt;</span>
<span class="s6">&lt;!-- En-tête héroïque --&gt;</span>
<span class="s0">&lt;header </span><span class="s2">class</span><span class="s3">=&quot;hero&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;container&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h1 </span><span class="s2">class</span><span class="s3">=&quot;animate__animated animate__fadeInDown&quot;</span><span class="s0">&gt;</span><span class="s1">Geo Realms Craft</span><span class="s0">&lt;/h1&gt;</span>
<span class="s0">&lt;p </span><span class="s2">class</span><span class="s3">=&quot;animate__animated animate__fadeInUp delay-1&quot;</span><span class="s0">&gt;</span><span class="s1">Une expérience Minecraft révolutionnée par 345 mods</span><span class="s0">&lt;/p&gt;</span>
<span class="s0">&lt;a </span><span class="s2">href</span><span class="s3">=&quot;#presentation&quot; </span><span class="s2">class</span><span class="s3">=&quot;cta-button animate__animated animate__zoomIn delay-2&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;svg </span><span class="s2">class</span><span class="s3">=&quot;icon&quot; </span><span class="s2">viewBox</span><span class="s3">=&quot;0 0 24 24&quot;</span><span class="s0">&gt;&lt;path </span><span class="s2">d</span><span class="s3">=&quot;M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z&quot;</span><span class="s0">/&gt;&lt;/svg&gt;</span>
<span class="s1">Commencer l'aventure</span>
<span class="s0">&lt;/a&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/header&gt;</span>
<span class="s6">&lt;!-- Navigation --&gt;</span>
<span class="s0">&lt;nav </span><span class="s2">class</span><span class="s3">=&quot;nav-wrapper&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;container&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;ul </span><span class="s2">class</span><span class="s3">=&quot;right hide-on-med-and-down&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;li&gt;&lt;a </span><span class="s2">href</span><span class="s3">=&quot;#presentation&quot; </span><span class="s2">class</span><span class="s3">=&quot;waves-effect&quot;</span><span class="s0">&gt;</span><span class="s1">Présentation</span><span class="s0">&lt;/a&gt;&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;&lt;a </span><span class="s2">href</span><span class="s3">=&quot;#regles&quot; </span><span class="s2">class</span><span class="s3">=&quot;waves-effect&quot;</span><span class="s0">&gt;</span><span class="s1">Règles</span><span class="s0">&lt;/a&gt;&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;&lt;a </span><span class="s2">href</span><span class="s3">=&quot;#news&quot; </span><span class="s2">class</span><span class="s3">=&quot;waves-effect&quot;</span><span class="s0">&gt;</span><span class="s1">Nouveautés</span><span class="s0">&lt;/a&gt;&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;&lt;a </span><span class="s2">href</span><span class="s3">=&quot;#join&quot; </span><span class="s2">class</span><span class="s3">=&quot;waves-effect&quot;</span><span class="s0">&gt;</span><span class="s1">Rejoindre</span><span class="s0">&lt;/a&gt;&lt;/li&gt;</span>
<span class="s0">&lt;/ul&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/nav&gt;</span>
<span class="s6">&lt;!-- Section Présentation --&gt;</span>
<span class="s0">&lt;section </span><span class="s2">id</span><span class="s3">=&quot;presentation&quot; </span><span class="s2">class</span><span class="s3">=&quot;section container&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;row&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;col s12&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;highlight-card&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h2 </span><span class="s2">class</span><span class="s3">=&quot;center-align&quot;</span><span class="s0">&gt;</span><span class="s1">Un Monde Où Minecraft Rencontre la Réalité</span><span class="s0">&lt;/h2&gt;</span>
<span class="s0">&lt;p </span><span class="s2">class</span><span class="s3">=&quot;flow-text&quot;</span><span class="s0">&gt;</span><span class="s1">Geo Realms Craft réinvente l'expérience Minecraft en donnant encore plus de liberté !</span><span class="s0">&lt;/p&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;row&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;col s12 m6&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;rule-category&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h4&gt;</span><span class="s1">🌍 Génération de Monde Épique</span><span class="s0">&lt;/h4&gt;</span>
<span class="s0">&lt;ul </span><span class="s2">class</span><span class="s3">=&quot;browser-default&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Immensité des biomes et de la verticalité de certains massifs </span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Répartition réaliste des ressources minérales</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Structure entierrement retravaillé </span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;/ul&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;col s12 m6&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;rule-category&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h4&gt;</span><span class="s1">🔧 principaux mods</span><span class="s0">&lt;/h4&gt;</span>
<span class="s0">&lt;ul </span><span class="s2">class</span><span class="s3">=&quot;browser-default&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Graphisme, audio, animation retravaillé</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Système de colonies évolutif avec Minecolonies</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Machineries avec Create 6.0</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Vehicules comme des trains, avions, voitures, bateaux</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;/ul&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;row&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;col s12&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h4&gt;</span><span class="s1">🌈 Fonctionnalités Clés</span><span class="s0">&lt;/h4&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;row&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;col s12 m4&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h5&gt;</span><span class="s1">Nourriture Stratégique</span><span class="s0">&lt;/h5&gt;</span>
<span class="s0">&lt;p&gt;</span><span class="s1">Systeme de nutrition nécessitant une alimentation variée et équilibrée </span><span class="s0">&lt;/p&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;col s12 m4&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h5&gt;</span><span class="s1">Combat Tactique</span><span class="s0">&lt;/h5&gt;</span>
<span class="s0">&lt;p&gt;</span><span class="s1">Refonte complète du système de combat avec styles d'attaques et équipements spécialisés</span><span class="s0">&lt;/p&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;col s12 m4&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h5&gt;</span><span class="s1">Économie Dynamique</span><span class="s0">&lt;/h5&gt;</span>
<span class="s0">&lt;p&gt;</span><span class="s1">Marché basé sur les joueurs avec monnaie non duplicable</span><span class="s0">&lt;/p&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/section&gt;</span>
<span class="s6">&lt;!-- Section Règles --&gt;</span>
<span class="s0">&lt;section </span><span class="s2">id</span><span class="s3">=&quot;regles&quot; </span><span class="s2">class</span><span class="s3">=&quot;section container&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h2 </span><span class="s2">class</span><span class="s3">=&quot;center-align&quot;</span><span class="s0">&gt;</span><span class="s1">Règles du Serveur</span><span class="s0">&lt;/h2&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;rule-category&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h4&gt;</span><span class="s1">📜 Conduite Générale</span><span class="s0">&lt;/h4&gt;</span>
<span class="s0">&lt;ul </span><span class="s2">class</span><span class="s3">=&quot;browser-default&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Respectez tous les joueurs et le staff.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Aucun langage offensant ou inapproprié.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Le grief et le vol sont strictement interdits.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Respectez la diversité des joueurs en évitant les commentaires discriminatoires.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Évitez les discussions politiques ou religieuses pour maintenir un environnement convivial.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Signalez tout comportement inapproprié ou harcèlement au staff pour une intervention rapide.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Les disputes entre joueurs doivent être résolues de manière calme et respectueuse.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;/ul&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;rule-category&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h4&gt;</span><span class="s1">⚔ Gameplay Équilibré</span><span class="s0">&lt;/h4&gt;</span>
<span class="s0">&lt;ul </span><span class="s2">class</span><span class="s3">=&quot;browser-default&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Ne pas tricher ou utiliser de mods qui donnent un avantage injuste.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Les constructions offensantes ou inappropriées seront supprimées.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Ne pas perturber les événements organisés par le serveur pour assurer une expérience de jeu fluide pour tous.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Évitez de monopoliser les ressources rares pour permettre à tous les joueurs de progresser équitablement.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Respectez les zones de construction des autres joueurs et ne les modifiez pas sans autorisation.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Évitez d'utiliser des bugs du jeu à votre avantage pour maintenir l'équité entre les joueurs.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;/ul&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;rule-category&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h4&gt;</span><span class="s1">💰 Intégrité Économique</span><span class="s0">&lt;/h4&gt;</span>
<span class="s0">&lt;ul </span><span class="s2">class</span><span class="s3">=&quot;browser-default&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Les transactions doivent être équitables et consenties par les deux parties.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">La manipulation de l'économie du serveur est interdite.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Ne pas escroquer d'autres joueurs lors de transactions en établissant des prix équitables.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Signalez toute activité suspecte liée à l'économie pour maintenir l'intégrité du système financier du serveur.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Évitez de monopoliser les commerces pour permettre à tous les joueurs de participer à l'économie du serveur.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Ne pas échanger des objets obtenus de manière frauduleuse pour préserver l'équilibre économique du serveur.</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;/ul&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s6">&lt;!-- ... Autres catégories de règles ... --&gt;</span>
<span class="s0">&lt;/section&gt;</span>
<span class="s6">&lt;!-- Section Nouveautés --&gt;</span>
<span class="s0">&lt;section </span><span class="s2">id</span><span class="s3">=&quot;news&quot; </span><span class="s2">class</span><span class="s3">=&quot;section container&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h2 </span><span class="s2">class</span><span class="s3">=&quot;center-align&quot;</span><span class="s0">&gt;</span><span class="s1">Évolutions Récentes</span><span class="s0">&lt;/h2&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;news-timeline&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;news-item&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h5&gt;</span><span class="s1">Version 1.0.2 🔄</span><span class="s0">&lt;/h5&gt;</span>
<span class="s0">&lt;p&gt;</span><span class="s1">• Optimisation majeure des performances serveur</span><span class="s0">&lt;br&gt;</span>
<span class="s1">• Refonte audio complete du jeu</span><span class="s0">&lt;br&gt;</span>
<span class="s1">• Test en conditions réel sur le serveur</span><span class="s0">&lt;br&gt;</span>
<span class="s1">• Rajout de mods d'ambiances </span><span class="s0">&lt;/p&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;news-item&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h5&gt;</span><span class="s1">Version 1.0.1 🔄</span><span class="s0">&lt;/h5&gt;</span>
<span class="s0">&lt;p&gt;</span><span class="s1">• Optimisation majeure des performances serveur</span><span class="s0">&lt;br&gt;</span>
<span class="s1">• Correction des bugs de génération de chunks</span><span class="s0">&lt;br&gt;</span>
<span class="s1">• Mises a jour vers create 6.0 et trie dans les mods</span><span class="s0">&lt;/p&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;news-item&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h5&gt;</span><span class="s1">Version 1.0.0 🎉</span><span class="s0">&lt;/h5&gt;</span>
<span class="s0">&lt;p&gt;</span><span class="s1">• Premiere release</span><span class="s0">&lt;br&gt;</span>
<span class="s1">• Premier test serveur</span><span class="s0">&lt;br&gt;</span>
<span class="s0">&lt;/p&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/section&gt;</span>
<span class="s6">&lt;!-- Section Rejoindre --&gt;</span>
<span class="s0">&lt;section </span><span class="s2">id</span><span class="s3">=&quot;join&quot; </span><span class="s2">class</span><span class="s3">=&quot;section container center-align&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;highlight-card&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h2&gt;</span><span class="s1">Prêt à Nous Rejoindre ?</span><span class="s0">&lt;/h2&gt;</span>
<span class="s0">&lt;p </span><span class="s2">class</span><span class="s3">=&quot;flow-text&quot;</span><span class="s0">&gt;</span><span class="s1">Postule des maintenant pour nous rejoindre ! </span><span class="s0">&lt;/code&gt;&lt;/p&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;row&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;col s12 m6&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;a </span><span class="s2">href</span><span class="s3">=&quot;postule.html&quot; </span><span class="s2">class</span><span class="s3">=&quot;cta-button&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;svg </span><span class="s2">class</span><span class="s3">=&quot;icon&quot; </span><span class="s2">viewBox</span><span class="s3">=&quot;0 0 24 24&quot;</span><span class="s0">&gt;&lt;path </span><span class="s2">d</span><span class="s3">=&quot;M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z&quot;</span><span class="s0">/&gt;&lt;/svg&gt;</span>
<span class="s1">Je postule!</span>
<span class="s0">&lt;/a&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;col s12 m6&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;a </span><span class="s2">href</span><span class="s3">=&quot;#&quot; </span><span class="s2">class</span><span class="s3">=&quot;cta-button&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;svg </span><span class="s2">class</span><span class="s3">=&quot;icon&quot; </span><span class="s2">viewBox</span><span class="s3">=&quot;0 0 24 24&quot;</span><span class="s0">&gt;&lt;path </span><span class="s2">d</span><span class="s3">=&quot;M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z&quot;</span><span class="s0">/&gt;&lt;/svg&gt;</span>
<span class="s1">Guide d'Installation</span>
<span class="s0">&lt;/a&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/section&gt;</span>
<span class="s6">&lt;!-- Pied de page --&gt;</span>
<span class="s0">&lt;footer&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;container&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;p&gt;</span><span class="s1">© 2025 Geo Realms Craft - Tous droits réservés</span><span class="s0">&lt;/p&gt;</span>
<span class="s0">&lt;p&gt;</span><span class="s1">Contact : </span><span class="s0">&lt;a </span><span class="s2">href</span><span class="s3">=&quot;https://discord.gg/uP7cDES&quot; </span><span class="s2">class</span><span class="s3">=&quot;white-text&quot;</span><span class="s0">&gt;</span><span class="s1">Discord Ebony</span><span class="s0">&lt;/a&gt;&lt;/p&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/footer&gt;</span>
<span class="s0">&lt;script </span><span class="s2">src</span><span class="s3">=&quot;https://code.jquery.com/jquery-3.6.0.min.js&quot;</span><span class="s0">&gt;&lt;/script&gt;</span>
<span class="s0">&lt;script </span><span class="s2">src</span><span class="s3">=&quot;https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js&quot;</span><span class="s0">&gt;&lt;/script&gt;</span>
<span class="s0">&lt;script&gt;</span>
<span class="s1">document.addEventListener(</span><span class="s3">'DOMContentLoaded'</span><span class="s1">, </span><span class="s7">function</span><span class="s1">() {</span>
<span class="s7">const </span><span class="s1">observer = </span><span class="s7">new </span><span class="s1">IntersectionObserver((entries) =&gt; {</span>
<span class="s1">entries.forEach(entry =&gt; {</span>
<span class="s7">if </span><span class="s1">(entry.isIntersecting) {</span>
<span class="s1">entry.target.classList.add(</span><span class="s3">'visible'</span><span class="s1">);</span>
<span class="s1">}</span>
<span class="s1">});</span>
<span class="s1">}, { threshold: </span><span class="s5">0.15 </span><span class="s1">});</span>
<span class="s1">document.querySelectorAll(</span><span class="s3">'.section'</span><span class="s1">).forEach(section =&gt; {</span>
<span class="s1">observer.observe(section);</span>
<span class="s1">});</span>
<span class="s1">$(</span><span class="s3">'a[href^=&quot;#&quot;]'</span><span class="s1">).on(</span><span class="s3">'click'</span><span class="s1">, </span><span class="s7">function</span><span class="s1">(e) {</span>
<span class="s1">e.preventDefault();</span>
<span class="s7">const </span><span class="s1">target = $(</span><span class="s7">this</span><span class="s1">.getAttribute(</span><span class="s3">'href'</span><span class="s1">));</span>
<span class="s7">if </span><span class="s1">(target.length) {</span>
<span class="s1">$(</span><span class="s3">'html, body'</span><span class="s1">).animate({</span>
<span class="s1">scrollTop: target.offset().top - </span><span class="s5">70</span>
<span class="s1">}, </span><span class="s5">800</span><span class="s1">);</span>
<span class="s1">}</span>
<span class="s1">});</span>
<span class="s1">M.AutoInit();</span>
<span class="s1">});</span>
<span class="s0">&lt;/script&gt;</span>
<span class="s0">&lt;/body&gt;</span>
<span class="s0">&lt;/html&gt;</span></pre>
</body>
</html>
+202
View File
@@ -0,0 +1,202 @@
<html>
<head>
<title>postule.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
.s0 { color: #d5b778;}
.s1 { color: #bcbec4;}
.s2 { color: #bababa;}
.s3 { color: #6aab73;}
.s4 { color: #56a8f5;}
.s5 { color: #2aacb8;}
.s6 { color: #cf8e6d;}
</style>
</head>
<body bgcolor="#1e1f22">
<table CELLSPACING=0 CELLPADDING=5 COLS=1 WIDTH="100%" BGCOLOR="#606060" >
<tr><td><center>
<font face="Arial, Helvetica" color="#000000">
postule.html</font>
</center></td></tr></table>
<pre><span class="s0">&lt;!DOCTYPE </span><span class="s2">html</span><span class="s0">&gt;</span>
<span class="s0">&lt;html </span><span class="s2">lang</span><span class="s3">=&quot;fr&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;head&gt;</span>
<span class="s0">&lt;meta </span><span class="s2">charset</span><span class="s3">=&quot;UTF-8&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;meta </span><span class="s2">name</span><span class="s3">=&quot;viewport&quot; </span><span class="s2">content</span><span class="s3">=&quot;width=device-width, initial-scale=1.0&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;title&gt;</span><span class="s1">Postuler - Geo Realms Craft</span><span class="s0">&lt;/title&gt;</span>
<span class="s0">&lt;link </span><span class="s2">href</span><span class="s3">=&quot;https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css&quot; </span><span class="s2">rel</span><span class="s3">=&quot;stylesheet&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;link </span><span class="s2">rel</span><span class="s3">=&quot;stylesheet&quot; </span><span class="s2">href</span><span class="s3">=&quot;https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;style&gt;</span>
<span class="s1">:</span><span class="s0">root </span><span class="s1">{</span>
<span class="s2">--primary-color</span><span class="s1">: </span><span class="s4">#760202</span><span class="s1">;</span>
<span class="s2">--secondary-color</span><span class="s1">: </span><span class="s4">#2c2c2c</span><span class="s1">;</span>
<span class="s2">--accent-color</span><span class="s1">: </span><span class="s4">#9d0b28</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s0">body </span><span class="s1">{</span>
<span class="s2">font-family</span><span class="s1">: </span><span class="s3">'Roboto'</span><span class="s1">, </span><span class="s3">sans-serif</span><span class="s1">;</span>
<span class="s2">background</span><span class="s1">: </span><span class="s4">#f8f9fa</span><span class="s1">;</span>
<span class="s2">color</span><span class="s1">: </span><span class="s4">#333</span><span class="s1">;</span>
<span class="s2">line-height</span><span class="s1">: </span><span class="s5">1.6</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">hero </span><span class="s1">{</span>
<span class="s2">background</span><span class="s1">: </span><span class="s0">linear-gradient</span><span class="s1">(</span><span class="s5">45</span><span class="s3">deg</span><span class="s1">, </span><span class="s0">rgba</span><span class="s1">(</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0.9</span><span class="s1">), </span><span class="s0">rgba</span><span class="s1">(</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0.7</span><span class="s1">)), </span><span class="s0">url</span><span class="s1">(</span><span class="s3">'background/0.jpg'</span><span class="s1">);</span>
<span class="s2">background-size</span><span class="s1">: </span><span class="s3">cover</span><span class="s1">;</span>
<span class="s2">background-position</span><span class="s1">: </span><span class="s3">center</span><span class="s1">;</span>
<span class="s2">min-height</span><span class="s1">: </span><span class="s5">50</span><span class="s3">vh</span><span class="s1">;</span>
<span class="s2">display</span><span class="s1">: </span><span class="s3">flex</span><span class="s1">;</span>
<span class="s2">align-items</span><span class="s1">: </span><span class="s3">center</span><span class="s1">;</span>
<span class="s2">justify-content</span><span class="s1">: </span><span class="s3">center</span><span class="s1">;</span>
<span class="s2">text-align</span><span class="s1">: </span><span class="s3">center</span><span class="s1">;</span>
<span class="s2">color</span><span class="s1">: </span><span class="s3">white</span><span class="s1">;</span>
<span class="s2">position</span><span class="s1">: </span><span class="s3">relative</span><span class="s1">;</span>
<span class="s2">overflow</span><span class="s1">: </span><span class="s3">hidden</span><span class="s1">;</span>
<span class="s2">padding</span><span class="s1">: </span><span class="s5">20</span><span class="s3">px</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">nav-wrapper </span><span class="s1">{</span>
<span class="s2">background</span><span class="s1">: </span><span class="s0">var</span><span class="s1">(</span><span class="s0">--secondary-color</span><span class="s1">);</span>
<span class="s2">position</span><span class="s1">: </span><span class="s3">sticky</span><span class="s1">;</span>
<span class="s2">top</span><span class="s1">: </span><span class="s5">0</span><span class="s1">;</span>
<span class="s2">z-index</span><span class="s1">: </span><span class="s5">1000</span><span class="s1">;</span>
<span class="s2">box-shadow</span><span class="s1">: </span><span class="s5">0 2</span><span class="s3">px </span><span class="s5">5</span><span class="s3">px </span><span class="s0">rgba</span><span class="s1">(</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0.1</span><span class="s1">);</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">section </span><span class="s1">{</span>
<span class="s2">padding</span><span class="s1">: </span><span class="s5">80</span><span class="s3">px </span><span class="s5">20</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">opacity</span><span class="s1">: </span><span class="s5">0</span><span class="s1">;</span>
<span class="s2">transform</span><span class="s1">: </span><span class="s0">translateY</span><span class="s1">(</span><span class="s5">30</span><span class="s3">px</span><span class="s1">);</span>
<span class="s2">transition</span><span class="s1">: </span><span class="s3">all </span><span class="s5">0.8</span><span class="s3">s </span><span class="s0">cubic-bezier</span><span class="s1">(</span><span class="s5">0.4</span><span class="s1">, </span><span class="s5">0</span><span class="s1">, </span><span class="s5">0.2</span><span class="s1">, </span><span class="s5">1</span><span class="s1">);</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">section</span><span class="s1">.</span><span class="s0">visible </span><span class="s1">{</span>
<span class="s2">opacity</span><span class="s1">: </span><span class="s5">1</span><span class="s1">;</span>
<span class="s2">transform</span><span class="s1">: </span><span class="s0">translateY</span><span class="s1">(</span><span class="s5">0</span><span class="s1">);</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">requirement-card </span><span class="s1">{</span>
<span class="s2">border-radius</span><span class="s1">: </span><span class="s5">15</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">padding</span><span class="s1">: </span><span class="s5">30</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">margin</span><span class="s1">: </span><span class="s5">20</span><span class="s3">px </span><span class="s5">0</span><span class="s1">;</span>
<span class="s2">background</span><span class="s1">: </span><span class="s3">white</span><span class="s1">;</span>
<span class="s2">box-shadow</span><span class="s1">: </span><span class="s5">0 10</span><span class="s3">px </span><span class="s5">30</span><span class="s3">px </span><span class="s0">rgba</span><span class="s1">(</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0</span><span class="s1">,</span><span class="s5">0.08</span><span class="s1">);</span>
<span class="s2">border-left</span><span class="s1">: </span><span class="s5">5</span><span class="s3">px solid </span><span class="s0">var</span><span class="s1">(</span><span class="s0">--accent-color</span><span class="s1">);</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">cta-button </span><span class="s1">{</span>
<span class="s2">display</span><span class="s1">: </span><span class="s3">inline-flex</span><span class="s1">;</span>
<span class="s2">align-items</span><span class="s1">: </span><span class="s3">center</span><span class="s1">;</span>
<span class="s2">padding</span><span class="s1">: </span><span class="s5">16</span><span class="s3">px </span><span class="s5">45</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">background</span><span class="s1">: </span><span class="s0">var</span><span class="s1">(</span><span class="s0">--primary-color</span><span class="s1">);</span>
<span class="s2">color</span><span class="s1">: </span><span class="s3">white</span><span class="s1">;</span>
<span class="s2">border-radius</span><span class="s1">: </span><span class="s5">50</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">text-decoration</span><span class="s1">: </span><span class="s3">none</span><span class="s1">;</span>
<span class="s2">transition</span><span class="s1">: </span><span class="s3">all </span><span class="s5">0.3</span><span class="s3">s ease</span><span class="s1">;</span>
<span class="s2">font-weight</span><span class="s1">: </span><span class="s5">600</span><span class="s1">;</span>
<span class="s2">text-transform</span><span class="s1">: </span><span class="s3">uppercase</span><span class="s1">;</span>
<span class="s2">letter-spacing</span><span class="s1">: </span><span class="s5">1</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">gap</span><span class="s1">: </span><span class="s5">10</span><span class="s3">px</span><span class="s1">;</span>
<span class="s2">margin-top</span><span class="s1">: </span><span class="s5">30</span><span class="s3">px</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s1">.</span><span class="s0">cta-button</span><span class="s1">:</span><span class="s0">hover </span><span class="s1">{</span>
<span class="s2">transform</span><span class="s1">: </span><span class="s0">translateY</span><span class="s1">(-</span><span class="s5">2</span><span class="s3">px</span><span class="s1">);</span>
<span class="s2">box-shadow</span><span class="s1">: </span><span class="s5">0 8</span><span class="s3">px </span><span class="s5">20</span><span class="s3">px </span><span class="s0">rgba</span><span class="s1">(</span><span class="s5">118</span><span class="s1">, </span><span class="s5">2</span><span class="s1">, </span><span class="s5">2</span><span class="s1">, </span><span class="s5">0.3</span><span class="s1">);</span>
<span class="s2">background</span><span class="s1">: </span><span class="s0">var</span><span class="s1">(</span><span class="s0">--accent-color</span><span class="s1">);</span>
<span class="s2">color</span><span class="s1">: </span><span class="s3">white</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s0">footer </span><span class="s1">{</span>
<span class="s2">background</span><span class="s1">: </span><span class="s0">var</span><span class="s1">(</span><span class="s0">--secondary-color</span><span class="s1">);</span>
<span class="s2">color</span><span class="s1">: </span><span class="s3">white</span><span class="s1">;</span>
<span class="s2">padding</span><span class="s1">: </span><span class="s5">60</span><span class="s3">px </span><span class="s5">0</span><span class="s1">;</span>
<span class="s2">text-align</span><span class="s1">: </span><span class="s3">center</span><span class="s1">;</span>
<span class="s2">margin-top</span><span class="s1">: </span><span class="s5">80</span><span class="s3">px</span><span class="s1">;</span>
<span class="s1">}</span>
<span class="s0">&lt;/style&gt;</span>
<span class="s0">&lt;/head&gt;</span>
<span class="s0">&lt;body&gt;</span>
<span class="s0">&lt;header </span><span class="s2">class</span><span class="s3">=&quot;hero&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;container&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h1 </span><span class="s2">class</span><span class="s3">=&quot;animate__animated animate__fadeInDown&quot;</span><span class="s0">&gt;</span><span class="s1">Postuler</span><span class="s0">&lt;/h1&gt;</span>
<span class="s0">&lt;p </span><span class="s2">class</span><span class="s3">=&quot;animate__animated animate__fadeInUp delay-1&quot;</span><span class="s0">&gt;</span><span class="s1">Rejoignez l'aventure Geo Realms Craft</span><span class="s0">&lt;/p&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/header&gt;</span>
<span class="s0">&lt;nav </span><span class="s2">class</span><span class="s3">=&quot;nav-wrapper&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;container&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;ul </span><span class="s2">class</span><span class="s3">=&quot;right hide-on-med-and-down&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;li&gt;&lt;a </span><span class="s2">href</span><span class="s3">=&quot;index.html&quot; </span><span class="s2">class</span><span class="s3">=&quot;waves-effect&quot;</span><span class="s0">&gt;</span><span class="s1">Retour à l'accueil</span><span class="s0">&lt;/a&gt;&lt;/li&gt;</span>
<span class="s0">&lt;/ul&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/nav&gt;</span>
<span class="s0">&lt;section </span><span class="s2">class</span><span class="s3">=&quot;section container&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;requirement-card animate__animated animate__fadeIn&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h2 </span><span class="s2">class</span><span class="s3">=&quot;center-align&quot;</span><span class="s0">&gt;</span><span class="s1">Conditions requises</span><span class="s0">&lt;/h2&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;row&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;col s12 m6&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h4&gt;</span><span class="s1">📋 Prérequis</span><span class="s0">&lt;/h4&gt;</span>
<span class="s0">&lt;ul </span><span class="s2">class</span><span class="s3">=&quot;browser-default&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Avoir au minimum 18 ans</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Avoir un PC correct</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Avoir Minecraft Java</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Être mature et responsable</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;/ul&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;col s12 m6&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;h4&gt;</span><span class="s1">⚠️ Important</span><span class="s0">&lt;/h4&gt;</span>
<span class="s0">&lt;ul </span><span class="s2">class</span><span class="s3">=&quot;browser-default&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Lire attentivement toutes les questions</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Répondre honnêtement</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Une candidature incomplète sera rejetée</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;li&gt;</span><span class="s1">Délai de traitement : jusqu'à 48 heures</span><span class="s0">&lt;/li&gt;</span>
<span class="s0">&lt;/ul&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;center-align&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;a </span><span class="s2">href</span><span class="s3">=&quot;https://docs.google.com/forms/d/e/1FAIpQLScsze3Xn7BdvFYn5RukknojyA1Bvy6aJU51p6DWzOE2iRzlbQ/viewform?usp=sf_link&quot; </span><span class="s2">target</span><span class="s3">=&quot;_blank&quot; </span><span class="s2">class</span><span class="s3">=&quot;cta-button&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;svg </span><span class="s2">class</span><span class="s3">=&quot;icon&quot; </span><span class="s2">viewBox</span><span class="s3">=&quot;0 0 24 24&quot; </span><span class="s2">style</span><span class="s3">=&quot;</span><span class="s2">width</span><span class="s1">: </span><span class="s5">24</span><span class="s3">px</span><span class="s1">; </span><span class="s2">height</span><span class="s1">: </span><span class="s5">24</span><span class="s3">px</span><span class="s1">; </span><span class="s2">fill</span><span class="s1">: </span><span class="s3">currentColor</span><span class="s1">;</span><span class="s3">&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;path </span><span class="s2">d</span><span class="s3">=&quot;M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z&quot;</span><span class="s0">/&gt;</span>
<span class="s0">&lt;/svg&gt;</span>
<span class="s1">Remplir le formulaire</span>
<span class="s0">&lt;/a&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/section&gt;</span>
<span class="s0">&lt;footer&gt;</span>
<span class="s0">&lt;div </span><span class="s2">class</span><span class="s3">=&quot;container&quot;</span><span class="s0">&gt;</span>
<span class="s0">&lt;p&gt;</span><span class="s1">© 2025 Geo Realms Craft - Tous droits réservés</span><span class="s0">&lt;/p&gt;</span>
<span class="s0">&lt;p&gt;</span><span class="s1">Contact : </span><span class="s0">&lt;a </span><span class="s2">href</span><span class="s3">=&quot;https://discord.gg/uP7cDES&quot; </span><span class="s2">class</span><span class="s3">=&quot;white-text&quot;</span><span class="s0">&gt;</span><span class="s1">Discord Ebony</span><span class="s0">&lt;/a&gt;&lt;/p&gt;</span>
<span class="s0">&lt;/div&gt;</span>
<span class="s0">&lt;/footer&gt;</span>
<span class="s0">&lt;script </span><span class="s2">src</span><span class="s3">=&quot;https://code.jquery.com/jquery-3.6.0.min.js&quot;</span><span class="s0">&gt;&lt;/script&gt;</span>
<span class="s0">&lt;script </span><span class="s2">src</span><span class="s3">=&quot;https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js&quot;</span><span class="s0">&gt;&lt;/script&gt;</span>
<span class="s0">&lt;script&gt;</span>
<span class="s1">document.addEventListener(</span><span class="s3">'DOMContentLoaded'</span><span class="s1">, </span><span class="s6">function</span><span class="s1">() {</span>
<span class="s6">const </span><span class="s1">observer = </span><span class="s6">new </span><span class="s1">IntersectionObserver((entries) =&gt; {</span>
<span class="s1">entries.forEach(entry =&gt; {</span>
<span class="s6">if </span><span class="s1">(entry.isIntersecting) {</span>
<span class="s1">entry.target.classList.add(</span><span class="s3">'visible'</span><span class="s1">);</span>
<span class="s1">}</span>
<span class="s1">});</span>
<span class="s1">}, { threshold: </span><span class="s5">0.15 </span><span class="s1">});</span>
<span class="s1">document.querySelectorAll(</span><span class="s3">'.section'</span><span class="s1">).forEach(section =&gt; {</span>
<span class="s1">observer.observe(section);</span>
<span class="s1">});</span>
<span class="s1">M.AutoInit();</span>
<span class="s1">});</span>
<span class="s0">&lt;/script&gt;</span>
<span class="s0">&lt;/body&gt;</span>
<span class="s0">&lt;/html&gt;</span></pre>
</body>
</html>
+370
View File
@@ -0,0 +1,370 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Geo Realms Craft - Serveur Minecraft Moddé</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css">
<style>
:root {
--primary-color: #760202;
--secondary-color: #2c2c2c;
--accent-color: #9d0b28;
}
body {
font-family: 'Roboto', sans-serif;
background: #f8f9fa;
color: #333;
line-height: 1.6;
}
.hero {
background: linear-gradient(45deg, rgba(0,0,0,0.9), rgba(0,0,0,0.7)), url('background/0.jpg');
background-size: cover;
background-position: center;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
color: white;
position: relative;
overflow: hidden;
padding: 20px;
}
.hero::after {
content: '';
position: absolute;
bottom: -50px;
left: -5%;
width: 110%;
height: 100px;
background: var(--primary-color);
transform: rotate(-3deg);
z-index: 1;
}
.nav-wrapper {
background: var(--secondary-color);
position: sticky;
top: 0;
z-index: 1000;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.section {
padding: 80px 20px;
opacity: 0;
transform: translateY(30px);
transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}
.section.visible {
opacity: 1;
transform: translateY(0);
}
.highlight-card {
border-radius: 15px;
padding: 30px;
margin: 20px 0;
background: white;
box-shadow: 0 10px 30px rgba(0,0,0,0.08);
border-left: 5px solid var(--accent-color);
}
.rule-category {
padding: 25px;
margin: 30px 0;
background: white;
border-radius: 12px;
box-shadow: 0 5px 15px rgba(0,0,0,0.06);
transition: all 0.3s ease;
}
.rule-category:hover {
transform: translateY(-5px);
box-shadow: 0 10px 25px rgba(0,0,0,0.12);
}
.news-timeline {
position: relative;
padding-left: 30px;
border-left: 3px solid var(--accent-color);
margin-left: 15px;
}
.news-item {
position: relative;
padding: 25px;
margin-bottom: 40px;
background: white;
border-radius: 10px;
box-shadow: 0 3px 6px rgba(0,0,0,0.05);
}
.news-item::before {
content: '';
position: absolute;
left: -38px;
top: 25px;
width: 20px;
height: 20px;
background: var(--accent-color);
border-radius: 50%;
border: 3px solid white;
}
.cta-button {
display: inline-flex;
align-items: center;
padding: 16px 45px;
background: var(--primary-color);
color: white;
border-radius: 50px;
text-decoration: none;
transition: all 0.3s ease;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 1px;
gap: 10px;
}
.cta-button:hover {
transform: translateY(-2px);
box-shadow: 0 8px 20px rgba(118, 2, 2, 0.3);
}
.icon {
width: 24px;
height: 24px;
fill: currentColor;
}
footer {
background: var(--secondary-color);
color: white;
padding: 60px 0;
text-align: center;
margin-top: 80px;
}
</style>
</head>
<body>
<!-- En-tête héroïque -->
<header class="hero">
<div class="container">
<h1 class="animate__animated animate__fadeInDown">Geo Realms Craft</h1>
<p class="animate__animated animate__fadeInUp delay-1">Une expérience Minecraft révolutionnée par 345 mods</p>
<a href="#presentation" class="cta-button animate__animated animate__zoomIn delay-2">
<svg class="icon" viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>
Commencer l'aventure
</a>
</div>
</header>
<!-- Navigation -->
<nav class="nav-wrapper">
<div class="container">
<ul class="right hide-on-med-and-down">
<li><a href="#presentation" class="waves-effect">Présentation</a></li>
<li><a href="#regles" class="waves-effect">Règles</a></li>
<li><a href="#news" class="waves-effect">Nouveautés</a></li>
<li><a href="#join" class="waves-effect">Rejoindre</a></li>
</ul>
</div>
</nav>
<!-- Section Présentation -->
<section id="presentation" class="section container">
<div class="row">
<div class="col s12">
<div class="highlight-card">
<h2 class="center-align">Un Monde Où Minecraft Rencontre la Réalité</h2>
<p class="flow-text">Geo Realms Craft réinvente l'expérience Minecraft en donnant encore plus de liberté !</p>
<div class="row">
<div class="col s12 m6">
<div class="rule-category">
<h4>🌍 Génération de Monde Épique</h4>
<ul class="browser-default">
<li>Immensité des biomes et de la verticalité de certains massifs </li>
<li>Répartition réaliste des ressources minérales</li>
<li>Structure entierrement retravaillé </li>
</ul>
</div>
</div>
<div class="col s12 m6">
<div class="rule-category">
<h4>🔧 principaux mods</h4>
<ul class="browser-default">
<li>Graphisme, audio, animation retravaillé</li>
<li>Système de colonies évolutif avec Minecolonies</li>
<li>Machineries avec Create 6.0</li>
<li>Vehicules comme des trains, avions, voitures, bateaux</li>
</ul>
</div>
</div>
</div>
<div class="row">
<div class="col s12">
<h4>🌈 Fonctionnalités Clés</h4>
<div class="row">
<div class="col s12 m4">
<h5>Nourriture Stratégique</h5>
<p>Systeme de nutrition nécessitant une alimentation variée et équilibrée </p>
</div>
<div class="col s12 m4">
<h5>Combat Tactique</h5>
<p>Refonte complète du système de combat avec styles d'attaques et équipements spécialisés</p>
</div>
<div class="col s12 m4">
<h5>Économie Dynamique</h5>
<p>Marché basé sur les joueurs avec monnaie non duplicable</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Section Règles -->
<section id="regles" class="section container">
<h2 class="center-align">Règles du Serveur</h2>
<div class="rule-category">
<h4>📜 Conduite Générale</h4>
<ul class="browser-default">
<li>Respectez tous les joueurs et le staff.</li>
<li>Aucun langage offensant ou inapproprié.</li>
<li>Le grief et le vol sont strictement interdits.</li>
<li>Respectez la diversité des joueurs en évitant les commentaires discriminatoires.</li>
<li>Évitez les discussions politiques ou religieuses pour maintenir un environnement convivial.</li>
<li>Signalez tout comportement inapproprié ou harcèlement au staff pour une intervention rapide.</li>
<li>Les disputes entre joueurs doivent être résolues de manière calme et respectueuse.</li>
</ul>
</div>
<div class="rule-category">
<h4>⚔ Gameplay Équilibré</h4>
<ul class="browser-default">
<li>Ne pas tricher ou utiliser de mods qui donnent un avantage injuste.</li>
<li>Les constructions offensantes ou inappropriées seront supprimées.</li>
<li>Ne pas perturber les événements organisés par le serveur pour assurer une expérience de jeu fluide pour tous.</li>
<li>Évitez de monopoliser les ressources rares pour permettre à tous les joueurs de progresser équitablement.</li>
<li>Respectez les zones de construction des autres joueurs et ne les modifiez pas sans autorisation.</li>
<li>Évitez d'utiliser des bugs du jeu à votre avantage pour maintenir l'équité entre les joueurs.</li>
</ul>
</div>
<div class="rule-category">
<h4>💰 Intégrité Économique</h4>
<ul class="browser-default">
<li>Les transactions doivent être équitables et consenties par les deux parties.</li>
<li>La manipulation de l'économie du serveur est interdite.</li>
<li>Ne pas escroquer d'autres joueurs lors de transactions en établissant des prix équitables.</li>
<li>Signalez toute activité suspecte liée à l'économie pour maintenir l'intégrité du système financier du serveur.</li>
<li>Évitez de monopoliser les commerces pour permettre à tous les joueurs de participer à l'économie du serveur.</li>
<li>Ne pas échanger des objets obtenus de manière frauduleuse pour préserver l'équilibre économique du serveur.</li>
</ul>
</div>
<!-- ... Autres catégories de règles ... -->
</section>
<!-- Section Nouveautés -->
<section id="news" class="section container">
<h2 class="center-align">Évolutions Récentes</h2>
<div class="news-timeline">
<div class="news-item">
<h5>Version 1.0.2 🔄</h5>
<p>• Optimisation majeure des performances serveur<br>
• Refonte audio complete du jeu<br>
• Test en conditions réel sur le serveur<br>
• Rajout de mods d'ambiances </p>
</div>
<div class="news-item">
<h5>Version 1.0.1 🔄</h5>
<p>• Optimisation majeure des performances serveur<br>
• Correction des bugs de génération de chunks<br>
• Mises a jour vers create 6.0 et trie dans les mods</p>
</div>
<div class="news-item">
<h5>Version 1.0.0 🎉</h5>
<p>• Premiere release<br>
• Premier test serveur<br>
</p>
</div>
</div>
</section>
<!-- Section Rejoindre -->
<section id="join" class="section container center-align">
<div class="highlight-card">
<h2>Prêt à Nous Rejoindre ?</h2>
<p class="flow-text">Postule des maintenant pour nous rejoindre ! </code></p>
<div class="row">
<div class="col s12 m6">
<a href="postule.html" class="cta-button">
<svg class="icon" viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>
Je postule!
</a>
</div>
<div class="col s12 m6">
<a href="#" class="cta-button">
<svg class="icon" viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>
Guide d'Installation
</a>
</div>
</div>
</div>
</section>
<!-- Pied de page -->
<footer>
<div class="container">
<p>© 2025 Geo Realms Craft - Tous droits réservés</p>
<p>Contact : <a href="https://discord.gg/uP7cDES" class="white-text">Discord Ebony</a></p>
</div>
</footer>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
}
});
}, { threshold: 0.15 });
document.querySelectorAll('.section').forEach(section => {
observer.observe(section);
});
$('a[href^="#"]').on('click', function(e) {
e.preventDefault();
const target = $(this.getAttribute('href'));
if (target.length) {
$('html, body').animate({
scrollTop: target.offset().top - 70
}, 800);
}
});
M.AutoInit();
});
</script>
</body>
</html>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+180
View File
@@ -0,0 +1,180 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Postuler - Geo Realms Craft</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css">
<style>
:root {
--primary-color: #760202;
--secondary-color: #2c2c2c;
--accent-color: #9d0b28;
}
body {
font-family: 'Roboto', sans-serif;
background: #f8f9fa;
color: #333;
line-height: 1.6;
}
.hero {
background: linear-gradient(45deg, rgba(0,0,0,0.9), rgba(0,0,0,0.7)), url('background/0.jpg');
background-size: cover;
background-position: center;
min-height: 50vh;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
color: white;
position: relative;
overflow: hidden;
padding: 20px;
}
.nav-wrapper {
background: var(--secondary-color);
position: sticky;
top: 0;
z-index: 1000;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.section {
padding: 80px 20px;
opacity: 0;
transform: translateY(30px);
transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}
.section.visible {
opacity: 1;
transform: translateY(0);
}
.requirement-card {
border-radius: 15px;
padding: 30px;
margin: 20px 0;
background: white;
box-shadow: 0 10px 30px rgba(0,0,0,0.08);
border-left: 5px solid var(--accent-color);
}
.cta-button {
display: inline-flex;
align-items: center;
padding: 16px 45px;
background: var(--primary-color);
color: white;
border-radius: 50px;
text-decoration: none;
transition: all 0.3s ease;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 1px;
gap: 10px;
margin-top: 30px;
}
.cta-button:hover {
transform: translateY(-2px);
box-shadow: 0 8px 20px rgba(118, 2, 2, 0.3);
background: var(--accent-color);
color: white;
}
footer {
background: var(--secondary-color);
color: white;
padding: 60px 0;
text-align: center;
margin-top: 80px;
}
</style>
</head>
<body>
<header class="hero">
<div class="container">
<h1 class="animate__animated animate__fadeInDown">Postuler</h1>
<p class="animate__animated animate__fadeInUp delay-1">Rejoignez l'aventure Geo Realms Craft</p>
</div>
</header>
<nav class="nav-wrapper">
<div class="container">
<ul class="right hide-on-med-and-down">
<li><a href="index.html" class="waves-effect">Retour à l'accueil</a></li>
</ul>
</div>
</nav>
<section class="section container">
<div class="requirement-card animate__animated animate__fadeIn">
<h2 class="center-align">Conditions requises</h2>
<div class="row">
<div class="col s12 m6">
<h4>📋 Prérequis</h4>
<ul class="browser-default">
<li>Avoir au minimum 18 ans</li>
<li>Avoir un PC correct</li>
<li>Avoir Minecraft Java</li>
<li>Être mature et responsable</li>
</ul>
</div>
<div class="col s12 m6">
<h4>⚠️ Important</h4>
<ul class="browser-default">
<li>Lire attentivement toutes les questions</li>
<li>Répondre honnêtement</li>
<li>Une candidature incomplète sera rejetée</li>
<li>Délai de traitement : jusqu'à 48 heures</li>
</ul>
</div>
</div>
<div class="center-align">
<a href="https://docs.google.com/forms/d/e/1FAIpQLScsze3Xn7BdvFYn5RukknojyA1Bvy6aJU51p6DWzOE2iRzlbQ/viewform?usp=sf_link" target="_blank" class="cta-button">
<svg class="icon" viewBox="0 0 24 24" style="width: 24px; height: 24px; fill: currentColor;">
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
</svg>
Remplir le formulaire
</a>
</div>
</div>
</section>
<footer>
<div class="container">
<p>© 2025 Geo Realms Craft - Tous droits réservés</p>
<p>Contact : <a href="https://discord.gg/uP7cDES" class="white-text">Discord Ebony</a></p>
</div>
</footer>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
}
});
}, { threshold: 0.15 });
document.querySelectorAll('.section').forEach(section => {
observer.observe(section);
});
M.AutoInit();
});
</script>
</body>
</html>