Skip to content

Repository files navigation

LimboRelay

Plugin Velocity qui redirige automatiquement les joueurs vers un serveur cible après leur authentification via NavAuth, avec un système de file d'attente intégré pour gérer les indisponibilités du serveur.

Fonctionnement

  1. Un joueur se connecte au proxy et atterrit sur le serveur limbo.
  2. NavAuth procède à l'authentification (auto-login premium ou /login crack).
  3. LimboRelay intercepte l'événement UserAuthenticatedEvent et ping le serveur cible :
    • Serveur disponible → transfert immédiat.
    • Serveur indisponible → le joueur reste en limbo et entre en file d'attente.
  4. Un watcher tourne en arrière-plan et ping le serveur cible à intervalle régulier. Dès qu'il répond, les joueurs en file sont redirigés un par un (avec un délai configurable).
  5. Si le serveur cible crashe ou redémarre pendant qu'un joueur y est connecté, celui-ci est automatiquement renvoyé en limbo et placé en file d'attente pour être reconnecté dès le retour du serveur.

Dépendances

Dépendance Rôle
Velocity ≥ 3.4.0 Proxy Minecraft requis
NavAuth Plugin d'authentification (doit tourner sur le proxy)

Installation

  1. Placez le jar LimboRelay-1.0.0.jar dans le dossier plugins/ de votre proxy Velocity.
  2. Assurez-vous que NavAuth est également installé et fonctionnel.
  3. Configurez votre velocity.toml pour que le serveur limbo soit un fallback valide.
  4. Démarrez le proxy — le fichier plugins/LimboRelay/config.yml est créé automatiquement au premier lancement.

Configuration

Le fichier config.yml est généré avec des valeurs par défaut commentées au premier démarrage.

# Serveur vers lequel les joueurs sont redirigés après authentification.
# Doit correspondre à un serveur enregistré dans velocity.toml.
target-server: survival

# Serveur d'attente où les joueurs patientent quand le serveur cible est indisponible.
# Doit correspondre à un serveur enregistré dans velocity.toml.
limbo-server: limbo

# Intervalle (en secondes) entre chaque ping du serveur cible (actif seulement si la file est non vide).
check-interval-seconds: 5

# Timeout (en ms) du ping utilisé pour sonder le serveur cible.
ping-timeout-ms: 2000

# Délai (en ms) entre chaque transfert de joueur lors du vidage de la file.
# Mettre à 0 pour envoyer tous les joueurs simultanément.
queue-dispatch-delay-ms: 200

messages:
  # Affiché quand le joueur est authentifié mais le serveur cible est indisponible.
  server-unavailable:
    - "<red><bold>⚠</bold></red> <gold>Le serveur démarre actuellement.</gold>"
    - "<gray>Vous avez été placé en file et serez transféré automatiquement.</gray>"

  # Affiché quand un joueur est renvoyé en limbo suite au crash/redémarrage du serveur cible.
  server-crashed:
    - "<red><bold>⚠</bold></red> <gold>Le serveur s'est fermé ou a crashé.</gold>"
    - "<gray>Vous avez été placé en file et serez reconnecté automatiquement.</gray>"

  # Affiché quand un joueur est transféré directement (sans passer par la file).
  sent-direct: "<green>✔</green> <gold>Transfert en cours…</gold>"

  # Affiché quand un joueur en file est finalement transféré après attente.
  sent-from-queue: "<green>✔</green> <gold>Le serveur est de retour — transfert en cours !</gold>"

  # Affiché dans l'action bar des joueurs en file à chaque tick du watcher.
  # Placeholder : {position} → position 1-based dans la file.
  queue-action-bar: "<yellow>⏳ Position en file : <white><bold>{position}</bold></white> — attente du serveur…</yellow>"

# Active les logs DEBUG dans la console.
debug: false

Tous les messages supportent le format MiniMessage. Les champs server-unavailable, server-crashed, sent-direct et sent-from-queue acceptent une chaîne simple ou une liste de chaînes (chaque entrée est envoyée comme message chat séparé).

Build

Prérequis

  • Java 25+
  • Gradle (le wrapper ./gradlew est inclus)
  • Accès au registre GitHub Packages de NavAuth (voir ci-dessous)

Credentials GitHub Packages

L'API NavAuth est publiée sur GitHub Packages. GitHub exige une authentification même pour les paquets publics. Créez un fichier ~/.gradle/gradle.properties avec :

gpr.user=VOTRE_USERNAME_GITHUB
gpr.key=VOTRE_TOKEN_GITHUB

Le token doit avoir le scope read:packages.

Vous pouvez aussi passer les credentials via des variables d'environnement :

export USERNAME=VOTRE_USERNAME_GITHUB
export TOKEN=VOTRE_TOKEN_GITHUB

Compilation

./gradlew build

Le jar final est produit dans build/libs/LimboRelay-1.0.0.jar.

Auteur

Développé par Aethernode.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages