# 📋 Notes Techniques - Serveur NationsGlory

## Configuration système

### Docker Container
```bash
Image: anapsix/alpine-java:7
Base: Alpine Linux
Java: OpenJDK 1.7.0_80
Architecture: amd64
```

### Commande de lancement
```bash
docker run -it --rm \
  --ulimit nofile=65535:65535 \
  -p 25565:25565 \
  -v "$PWD":/server \
  anapsix/alpine-java:7 \
  sh -c 'cd /server && java -Xmx2G -Xms1G -XX:+UseG1GC -jar mcpc.jar nogui'
```

### Paramètres JVM
- `-Xmx2G` : RAM maximale 2 GB
- `-Xms1G` : RAM initiale 1 GB
- `-XX:+UseG1GC` : Garbage Collector G1 (optimisé pour serveurs)
- `--ulimit nofile=65535:65535` : Limite de fichiers ouverts (évite erreur ENOMEM)

## Structure Maven (libraries/)

```
libraries/
├── net/minecraft/launchwrapper/1.8/launchwrapper-1.8.jar
├── org/ow2/asm/asm-all/4.1/asm-all-4.1.jar
├── org/scala-lang/
│   ├── scala-library/2.10.2/scala-library-2.10.2.jar
│   └── scala-compiler/2.10.2/scala-compiler-2.10.2.jar
├── lzma/lzma/0.0.1/lzma-0.0.1.jar
└── net/sf/jopt-simple/jopt-simple/4.5/jopt-simple-4.5.jar
```

## Mods chargés (21)

1. **mcp** - Minecraft Coder Pack
2. **FML** - Forge Mod Loader
3. **Forge** - Minecraft Forge 9.11.1.965
4. **AquaTweaks** - Modifications aquatiques
5. **etfuturum** - Fonctionnalités futures
6. **bspkrsCore** - Bibliothèque de base
7. **CalclaviaCore** - Core pour mods électriques
8. **Autoutils** - Outils automatiques
9. **Chisel** - Blocs décoratifs variés
10. **customnpcs** - PNJs personnalisables
11. **FlansMod** - Véhicules, avions, armes
12. **MattCore** - Core de base
13. **model-api** - API de modèles
14. **nabot** - Mod NationsGlory
15. **netherrocks** - Minerais du Nether
16. **BiblioCraft** - Meubles et décorations
17. **ParachuteMod** - Parachutes
18. **TLSpecialArmor** - Armures spéciales
19. **UniversalElectricity** - Système électrique
20. **weaponmod** - Armes avancées
21. **WesterosBlocks** - Blocs Game of Thrones

## Plugins Bukkit (2)

### WorldEdit
- Version: Compatible Bukkit 1.6.4
- Taille: 8.8 KB
- Source: dev.bukkit.org/projects/worldedit/files/562101

### Essentials
- Version: Compatible Bukkit 1.6.4
- Taille: 8.8 KB
- Source: dev.bukkit.org/projects/essentials/files/862412

## Fichiers de configuration

### server.properties (principaux paramètres)
```properties
server-port=25565
max-players=20
gamemode=1
difficulty=0
spawn-monsters=false
spawn-npcs=true
spawn-animals=true
pvp=false
level-type=FLAT
level-name=world
online-mode=false
allow-flight=true
view-distance=10
```

### bukkit.yml
Configuration Bukkit par défaut générée automatiquement.

### spigot.yml
Configuration Spigot (intégré dans MCPC+).

### forge.cfg
Configuration Forge pour le chargement des mods.

## Permissions système

### Propriétaire des fichiers
```bash
innotex:innotex - Fichiers utilisateur
root:root - Fichiers générés par Docker (world, config, etc.)
```

### Correction des permissions si nécessaire
```bash
sudo chown -R innotex:innotex /home/innotex/Documents/Projet/Serveur\ NationsGlory/server-final/
```

## Ports réseau

- **25565/TCP** : Port Minecraft principal
- Mappé avec `-p 25565:25565` dans Docker

## Logs et monitoring

### Fichiers de logs
```
server.log - Log principal temps réel
ForgeModLoader-server-0.log - Logs Forge
*.log.lck - Fichiers de verrouillage (ne pas supprimer pendant exécution)
crash-reports/ - Rapports de crash
```

### Rotation des logs
Les logs sont automatiquement archivés :
- `server.log.1`, `server.log.2`, etc.
- `ForgeModLoader-server-0.log.1`, etc.

## Performances

### Métriques observées
- Démarrage: ~0.8 secondes
- RAM utilisée: ~1.2 GB en fonctionnement
- CPU: Variable selon nombre de joueurs

### Optimisations appliquées
- G1GC pour réduction des pauses GC
- ulimit nofile élevé (65535)
- view-distance modéré (10 chunks)

## Problèmes connus et solutions

### SEVERE: Anonymous items
**Problème**: Messages "anonymous item will NOT survive a 1.7 upgrade"  
**Impact**: Aucun sur Minecraft 1.6.4  
**Solution**: Ignorer, avertissements pour migration future

### Item discrepancies (IDs 2054, 4095)
**Problème**: Items manquants de mods  
**Impact**: Avertissements au démarrage, pas de crash  
**Solution**: Monde généré avec config différente, supprimable si besoin

### Invalid material warnings (WesterosBlocks)
**Problème**: Material 'stone' et step sound 'dirt' invalides  
**Impact**: Minimal, blocs fonctionnels  
**Solution**: Problème de mod, ignorer

### MattparksCore update check failed
**Problème**: Échec de vérification de mise à jour  
**Impact**: Aucun, fonctionnalité cosmétique  
**Solution**: Ignorer ou désactiver dans config

## Compatibilité

### Client Minecraft
- Version requise: **1.6.4**
- Launcher: NationsGlory, MultiMC, ou launcher officiel avec profile 1.6.4
- Mods client: Même liste que serveur recommandée

### Système d'exploitation
- ✅ Linux (testé sur Debian 13)
- ✅ Windows (via Docker Desktop)
- ✅ macOS (via Docker Desktop)

### Dépendances
- Docker 20.10+
- 4 GB RAM système minimum
- 1 GB espace disque

## Backup et restauration

### Fichiers critiques à sauvegarder
```
server-final/world/          # Monde principal
server-final/DIM1/           # Nether (si existe)
server-final/DIM-1/          # End (si existe)
server-final/ops.txt         # Opérateurs
server-final/white-list.txt  # Liste blanche
server-final/banned-*.txt    # Bans
```

### Script de backup automatique
```bash
#!/bin/bash
cd /home/innotex/Documents/Projet/Serveur\ NationsGlory/server-final
DATE=$(date +%Y%m%d-%H%M)
tar -czf ../backups/world-$DATE.tar.gz world/ DIM*/
echo "Backup créé: world-$DATE.tar.gz"
```

## Commandes utiles

### Monitoring
```bash
# Voir les processus Docker
docker ps

# Logs en temps réel
docker logs -f <container_id>

# Utilisation ressources
docker stats

# Joueurs connectés
grep "logged in" server-final/server.log | tail -10
```

### Maintenance
```bash
# Arrêt propre
docker stop <container_id>

# Forcer l'arrêt (déconseillé)
docker kill <container_id>

# Nettoyer les conteneurs arrêtés
docker container prune
```

## Sécurité

### Points d'attention
- ⚠️ **online-mode=false** : Pas d'authentification Mojang
- ⚠️ **Aucun firewall** : Port 25565 exposé
- ⚠️ **Pas de whitelist** : Serveur public par défaut

### Recommandations
1. Activer whitelist pour serveur privé
2. Utiliser iptables pour filtrer IPs
3. Configurer les permissions via OP
4. Sauvegardes régulières

## Version Control (.gitignore)

### Fichiers exclus
- `*.log` - Logs
- `world/` - Monde (optionnel)
- `crash-reports/` - Rapports de crash
- `cache/`, `debug/` - Fichiers temporaires
- `ops.txt`, `banned-*.txt` - Fichiers sensibles

### Fichiers versionnés
- `server-final/mcpc.jar` - Exécutable serveur
- `server-final/start-docker.sh` - Script de démarrage
- `server-final/server.properties` - Configuration
- `server-final/mods/` - Mods
- `server-final/plugins/` - Plugins
- Documentation (README, etc.)

---

**Dernière mise à jour**: 3 février 2026  
**Mainteneur**: Configuration automatique GitHub Copilot
