💻Multi Server

📝 Introduction

Le système multi-serveur d'Horizons permet de synchroniser les équipes, les challenges et le chat entre plusieurs serveurs Minecraft en utilisant Redis comme système de communication. Cette fonctionnalité est idéale pour les réseaux de serveurs qui souhaitent maintenir une cohérence des données entre leurs différents serveurs.

Prérequis

  • Redis Server : Un serveur Redis accessible depuis tous vos serveurs Minecraft

  • Plugin Horizons installé sur tous les serveurs du réseau

  • Connexion réseau entre tous les serveurs et le serveur Redis

🔧 Configuration de Base

Le fichier de configuration se trouve dans plugins/Horizons/multiserver-config.yml.

Configuration Redis

redis:
  enabled: true                    # Active/désactive le système multi-serveur
  host: "localhost"               # Adresse IP du serveur Redis
  port: 6379                      # Port du serveur Redis (par défaut 6379)
  password: ""                    # Mot de passe Redis (laissez vide si aucun)
  database: 0                     # Base de données Redis à utiliser
  prefix: "horizons:"             # Préfixe pour toutes les clés Redis

Configuration des Serveurs

server-name: "server1"            # Nom unique de ce serveur
parent-server: "server1"         # Nom du serveur parent (pour les challenges)

Important : Chaque serveur doit avoir un server-name unique. Le parent-server doit correspondre au nom d'un serveur existant dans votre réseau.

🔄 Synchronisation des Données

Activation des Synchronisations

sync:
  challenges: true                # Synchronise les challenges entre serveurs
  teams: true                     # Synchronise les équipes entre serveurs
  player-data: true              # Synchronise les données des joueurs
  chat: false                     # Synchronise le chat entre serveurs

Fonctionnalités Synchronisées

🏆 Équipes (teams: true)

  • Création/suppression d'équipes : Les équipes créées sur un serveur apparaissent sur tous les autres

  • Statut staff : Le statut staff des équipes est synchronisé

  • Membres : L'ajout/suppression de membres est partagé entre serveurs

  • Scores : Les scores des équipes sont mis à jour en temps réel

🎯 Challenges (challenges: true)

  • Progression : La progression des challenges est synchronisée en temps réel

  • Complétion : Les challenges complétés sont marqués sur tous les serveurs

  • Configuration : Seul le serveur parent peut créer/modifier/supprimer des challenges

💬 Chat (chat: true)

  • Messages cross-serveur : Les messages de chat sont partagés entre serveurs

  • Préfixes de serveur : Affichage du serveur d'origine des messages

  • Permissions : Respect des permissions de chat sur chaque serveur

📡 Configuration des Canaux Redis

channels:
  challenges: "horizons:challenges"     # Canal pour les challenges
  teams: "horizons:teams"              # Canal pour les équipes
  player-data: "horizons:player-data"  # Canal pour les données joueurs
  chat: "horizons:chat"                # Canal pour le chat
  broadcast: "horizons:broadcast"       # Canal pour les annonces

Note : Vous pouvez personnaliser les noms des canaux, mais ils doivent être identiques sur tous les serveurs.

💬 Configuration du Chat

Affichage des Messages Cross-Serveur

chat:
  show-server-prefix: true              # Affiche le préfixe du serveur d'origine
  server-prefix-format: "[{server}] "  # Format du préfixe serveur

Exemple d'affichage :

[Lobby] <Joueur123> Salut tout le monde !
[Survie] <Admin> Bienvenue sur le réseau !

Système de Broadcast

broadcast:
  cross-server-enabled: true           # Active les annonces cross-serveur
  prefix-format: "[{server}] "         # Format du préfixe pour les annonces

🔍 Découverte de Serveurs

server-discovery:
  enabled: true                        # Active la découverte automatique des serveurs
  heartbeat-interval: 30              # Intervalle de battement de cœur (secondes)
  server-timeout: 90                  # Délai avant qu'un serveur soit considéré hors ligne
  discovery-channel: "horizons:server-discovery"  # Canal de découverte

Cette fonctionnalité permet :

  • Détection automatique des serveurs en ligne

  • Monitoring de l'état des serveurs du réseau

  • Gestion des déconnexions automatique

⚙️ Paramètres Avancés

advanced:
  connection-timeout: 5000            # Délai de connexion Redis (ms)
  max-connections: 20                 # Nombre maximum de connexions Redis
  min-idle-connections: 5             # Nombre minimum de connexions inactives
  debug-logging: false                # Active les logs de débogage détaillés
  retry-attempts: 3                   # Nombre de tentatives de reconnexion
  retry-delay: 1000                   # Délai entre les tentatives (ms)

💡 Exemples d'Usage

Réseau Lobby + Serveurs de Jeu

Configuration Lobby (Parent) :

server-name: "lobby"
parent-server: "lobby"
sync:
  challenges: true
  teams: true
  chat: true

Configuration Serveurs de Jeu :

server-name: "survie"  # ou "creatif", "pvp", etc.
parent-server: "lobby"
sync:
  challenges: true
  teams: true
  chat: false  # Chat local uniquement

Serveurs Thématiques

Serveur Challenges :

server-name: "challenges"
parent-server: "challenges"
sync:
  challenges: true
  teams: true

Serveurs de Jeu :

sync:
  challenges: true  # Reçoit les challenges
  teams: true

🆘 Support

En cas de problème :

  1. Activez le debug : debug-logging: true

  2. Consultez les logs du serveur et de Redis

  3. Vérifiez la connectivité réseau entre serveurs

  4. Testez avec une configuration minimale avant d'ajouter des fonctionnalités


Cette documentation couvre l'ensemble des fonctionnalités multi-serveur d'Horizons. Pour des configurations spécifiques ou des problèmes avancés, consultez les logs détaillés avec le mode debug activé.

Mis à jour