Documentation

VelocityInstanceManager VIM v1.0.0

Gérez dynamiquement vos instances de serveurs Minecraft depuis Velocity.
Création, duplication, scaling automatique, et bien plus.

Présentation

VelocityInstanceManager (VIM) est un plugin pour Velocity qui permet de gérer dynamiquement des instances de serveurs Minecraft (Paper, Spigot, etc.). Il offre :

  • Création / duplication d'instances à la demande
  • Auto-duplication quand un serveur atteint sa limite de joueurs
  • Gestion automatique des ports
  • Arrêt programmé des instances inactives
  • Système complet de commandes et permissions
  • Templates personnalisables (mémoire, JVM args, etc.)

Idéal pour les réseaux de serveurs qui ont besoin de scaler rapidement sans intervention manuelle.

Installation

  1. Téléchargez le fichier VelocityInstanceManager-1.0.0.jar depuis GitHub.
  2. Placez-le dans le dossier plugins/ de votre serveur Velocity.
  3. Redémarrez Velocity.
  4. Un dossier plugins/velocityinstancemanager/ sera créé avec un fichier config.yml.
  5. Configurez vos templates (voir section Configuration).
  6. Placez vos serveurs "templates" (dossiers contenant un serveur Minecraft prêt à être copié) dans le chemin indiqué dans la config.
Le plugin nécessite Java 17+ et Velocity 3.3.0+.

Configuration

Le fichier config.yml est généré automatiquement lors du premier démarrage. Voici sa structure :

settings:
  auto_start_timeout: 30      # secondes avant de considérer un serveur démarré
  inactive_timeout: 300       # secondes sans joueurs avant arrêt (0 = désactivé)
  duplicate_on_join: false    # créer une instance si toutes sont pleines
  max_total_instances: 20     # nombre max d'instances simultanées

templates:
  survival:
    path: "templates/survival"
    min_memory: 1024
    max_memory: 2048
    port_range_start: 30000
    port_range_end: 31000
    auto_duplicate: true
    max_players: 20
    max_instances: 5
    jvm_args: "-XX:+UseG1GC"
    server_jar: "server.jar"
    startup_command: "java -Xmx{max_memory}M -Xms{min_memory}M {jvm_args} -jar {server_jar} nogui"
  creative:
    # ...

Explication des champs

  • path : dossier contenant le serveur template (relatif à la racine du proxy ou absolu).
  • min/max_memory : mémoire allouée à l'instance (en Mo).
  • port_range_start/end : plage de ports dynamiques.
  • auto_duplicate : si true, crée une nouvelle instance quand le serveur atteint max_players - 1.
  • startup_command : commande de lancement. Les variables {max_memory}, {min_memory}, {jvm_args}, {server_jar} sont automatiquement remplacées.

Commandes

Toutes les commandes sont accessibles via /instance (alias /inst, /vim).

/instance list Affiche la liste des instances actives avec leur nombre de joueurs.
/instance create <template> <name> Crée une nouvelle instance à partir d'un template.
/instance duplicate <source> <new> Duplique une instance existante (copie complète).
/instance start <name> Démarre une instance arrêtée (si supporté).
/instance stop <name> Arrête une instance et la retire du registre Velocity.
/instance join <name> Envoie le joueur vers l'instance spécifiée.
/instance info <name> Donne des informations détaillées (port, template, joueurs, statut).
/instance templates Liste les templates disponibles avec leurs caractéristiques.

Permissions

Attribuez les permissions suivantes à vos joueurs ou groupes :

vim.admin Accès à toutes les commandes.
vim.create Permet d'exécuter /instance create.
vim.duplicate Permet d'exécuter /instance duplicate.
vim.stop Permet d'arrêter une instance.
vim.join Permet d'utiliser /instance join.
vim.list Permet de lister les instances.
vim.info Permet de voir les détails d'une instance.
Les permissions sont vérifiées via le système de permission de Velocity (LuckPerms, etc.).

Création de templates

Un template est un dossier contenant un serveur Minecraft prêt à être exécuté (avec son server.jar, ses plugins, etc.).

  1. Créez un serveur Paper/Spigot classique.
  2. Configurez-le (optionnel : supprimez le server.properties car le plugin le régénérera avec le bon port).
  3. Placez ce dossier dans le chemin indiqué dans la config (ex: templates/survival/).
  4. Le plugin copiera ce dossier à chaque création d'instance.
Assurez-vous que le server.jar est bien présent et que le script de démarrage est correct.

API pour développeurs

Vous pouvez étendre VIM en utilisant son API (disponible prochainement). Actuellement, le plugin expose son gestionnaire via l'objet principal :

VelocityInstanceManager vim = (VelocityInstanceManager) proxyServer.getPluginManager().getPlugin("velocityinstancemanager").orElse(null);
ServerInstanceManager manager = vim.getInstanceManager();
manager.createInstance("survival", "mon_serveur");

Un module API séparé sera publié dans une future version.

Support & Contribution

Le plugin est open-source sous licence MIT. Les contributions sont les bienvenues !