Aller au contenu

Rustic Server est le serveur d’Horizon avec un système de plugins isolés. Créez-le depuis le launcher, hébergez-le où vous voulez, ajoutez des plugins qui ne peuvent pas le faire tomber.

les-copains-smp · consoleexemple
Vidéo (données d’exemple) : la console d’un serveur Rustic montre un plugin qui a échoué au démarrage ; il est mis à jour depuis l’onglet Plugins et rechargé pendant que le serveur tourne.

Enregistré dans Rustic Launcher avec des données d’exemple : un plugin en échec au démarrage, mis à jour et rechargé pendant que le serveur tourne.

Robuste là où ça compte.

Les plugins tournent dans un bac à sable WebAssembly avec des limites de carburant, de mémoire et de temps. Une erreur, une panique ou une boucle infinie désactive ce plugin ; le serveur continue.

    • Chaque plugin tourne isolé, en WebAssembly
    • Carburant, mémoire et temps limités à chaque appel
    • Erreur, panique ou boucle infinie : seul ce plugin est désactivé
    • Mis à jour et rechargé pendant que le serveur tourne
    • 0,37 µs pour l’aller-retour d’un import hôte
    • 1,3 µs pour une commande console vers un plugin
    • 21,3 µs pour un événement et 10 plugins abonnés
    • 180 ms de compilation à froid, 0,24 ms depuis le cache
    • 5 plugins officiels, en français et en anglais
    • rustic new, build, check, test, run --watch
    • Les tests lancent le vrai .wasm dans un serveur en mémoire
    • Rustic Bridge (débuts) : jars Bukkit et Paper isolés dans une JVM
Exemple · journal du serveuren ligne

buggy : boucle infinie

TPS avant la panne20
TPS après la panne20

0joueur déconnecté, seul le plugin fautif est désactivé

Sur cet ordinateur, sur votre propre VPS via SSH, ou joignable par Rustic Relay sans redirection de ports. Géré depuis le même écran.

  • Votre ordinateur

    Sur cet ordinateur

    Lancez un serveur à côté de votre jeu. Console, joueurs, sauvegardes et statistiques dans le launcher.

  • SSH

    Sur votre propre VPS

    Donnez l’adresse de votre serveur : le launcher installe, configure et met à jour Horizon par SSH, après avoir vérifié avec vous l’empreinte de la machine.

  • Code d’invitation · adresse temporaire

    Via Rustic Relay

    Sans redirection de ports : vos amis rejoignent avec un code d’invitation ou une adresse temporaire, votre propre domaine est facultatif.

Un plugin fautif désactivé pendant que la partie continue, ce que coûte un appel à un plugin, et les limites sous lesquelles chacun tourne.

bac à sable · panne et repriseexemple
essentials-litepermschat-formatmenusmini-gamebuggyservertps 20.0
  1. [rustic] Rustic ready: 6 plugin(s) enabled (6 loaded, 0 failed)
  2. [rustic] [buggy] fuel-exhausted in event: … — the plugin is disabled
  3. le tick continue · tps 20.0 · les joueurs restent connectés
  4. > rustic reload buggy
  5. [rustic] reloaded buggy

Exemple au format du journal du serveur. Limites par appel : carburant, délai en temps réel et plafond de mémoire.

coût mesuré par appelcriterion · build release
  • aller-retour d’un import hôte0,37 µs
  • commande console vers un plugin1,3 µs
  • événement, 1 plugin abonné2,2 µs
  • événement, 10 plugins abonnés21,3 µs

Barres logarithmiques. Source : docs/PERFORMANCE.md (benchmarks Rust du dépôt serveur).

180 mscompilation à froid (plugin de 460 Kio)
6,3 msdepuis le cache disque
0,24 msdepuis le cache mémoire

Limites par défaut de chaque plugin

  • fuel_per_call = 50_000_000Instructions qu’un plugin peut exécuter par appel (par défaut) ; une boucle infinie s’épuise.
  • epoch_deadline_ms = 50Délai en temps réel d’un appel ; un plugin qui bloque est arrêté.
  • memory_mb = 64Limite de mémoire par défaut d’un plugin, plafonnée par le serveur (512 Mo).

Écrits de zéro pour Rustic, en français et en anglais, chacun un .rplugin isolé que vous pouvez lire, tester et modifier.

  • Essentials Lite

    Spawn, maisons, warps, demandes de téléportation, /back, messages privés et annonces, avec délai et temps de recharge.

    essentials-lite.rpluginWebAssembly
  • Perms

    Groupes avec héritage et poids, préfixes, nœuds jokers et négatifs, nœuds temporaires, pistes de promotion.

    perms.rpluginWebAssembly
  • Chat Format

    Formats de ligne par groupe, @mentions, anti-spam, filtres de liens et de mots, mutes avec expiration.

    chat-format.rpluginWebAssembly
  • Menus

    Des menus coffre construits avec le Menu du SDK, et un recueil de recettes à copier.

    menus.rpluginWebAssembly
  • Mini-game

    Spleef et Roi de la colline : compte à rebours, manches chronométrées, tableau en direct, classement.

    mini-game.rpluginWebAssembly
  • Ou le vôtrerustic new part d’un modèle (basic, command, gui, service) avec des tests qui passent dès le départ.$ rustic new

Les plugins sont des crates Rust compilées en WebAssembly avec le SDK Rustic. Les tests lancent votre vrai plugin dans un serveur en mémoire depuis cargo test, à la MockBukkit, sans démarrer de jeu.

use rustic::prelude::*;

#[rustic::handlers]
impl Greeter {
    #[command(name = "spawn", description = "Teleport to the spawn")]
    fn spawn(&mut self, cmd: &mut CommandCtx) -> CommandResult {
        let player = cmd.player()?;
        let spawn = World::overworld().spawn_location()?;
        player.teleport(&spawn)?;
        cmd.reply(Text::mini("<green>Welcome back to spawn!"));
        Ok(())
    }
}

Une commande /spawn : enregistrée quand le plugin est activé, retirée quand il est désactivé. Tiré du guide « premier plugin ».

La commande rustic
  • rustic new <id>Une crate de plugin depuis un modèle, avec des tests qui passent.
  • rustic buildCompiler pour wasm32-wasip2, vérifier le composant, empaqueter le .rplugin.
  • rustic checkValider un manifeste ou un paquet, lister ce qu’il demande.
  • rustic testLancer les tests du plugin contre le serveur en mémoire.
  • rustic run --watchDémarrer un serveur de dev ; chaque sauvegarde recompile et recharge le plugin à chaud.
  • rustic bridge analyzeDire quels jars de plugins Bukkit pourraient tourner sur Rustic Bridge.

Rustic Bridge fait tourner des plugins Bukkit et Paper existants, sans les modifier, dans une JVM à côté du serveur. Si l’un d’eux bloque ou plante, la JVM est arrêtée et ces plugins désactivés ; le serveur continue.

Rustic Bridge

débuts

Chaque jar devient un plugin Rustic avec les commandes et permissions de son plugin.yml, ses écouteurs à leur priorité, ses tâches planifiées et sa configuration. Plugins Bukkit et WebAssembly partagent les mêmes événements.

  • Une JVM séparée (sidecar) : un plugin bloqué ou qui plante ne peut pas faire tomber le serveur
  • Un chien de garde arrête une JVM qui ne répond plus ; rustic reload bukkit-bridge relance les plugins
  • Pas encore : inventaires, entités autres que les joueurs, scoreboards, NMS
Méthodes des interfaces Bukkit implémentées206 / 1 025 · 20 %Débuts : la longue traîne manque. Pondérés par l’usage, les 52 membres de l’API des plugins de démo sont tous servis. Source : docs/BUKKIT_MAPPING.md.
journal du serveur pendant un test avec un bot (docs/BRIDGE.md)
  1. [bukkit-bridge] JVM started (pid 52956) in 178 ms
  2. Rustic ready: 4 plugin(s) enabled (4 loaded, 0 failed)
  3. System chat: Welcome, BridgeBot0!
  4. [Rustic Bridge] a plugin called System.exit(3); refused
  5. [Rustic Bridge Watchdog] the main thread has been busy for 3026 ms in `command (Probe)`
  6. [bukkit-bridge] the JVM did not answer within 5000 ms; the JVM (pid 52956) is stopped and the Bukkit plugins are disabled
  7. <BridgeBot0> the server survived a stuck plugin
  8. [bukkit-bridge] JVM started (pid 34884) in 193 ms

Créez votre premier serveur Rustic depuis le launcher.

Gratuit, avec votre propre exemplaire du jeu. Plugins, console, joueurs et sauvegardes sur un seul écran.

Télécharger

Rejoindre

Créer un compte gratuit

Gratuit. Vous confirmez votre adresse par e-mail ; aucune publicité.

Un launcher rapide et social pour Horizon. Gratuit et open source.

Suivre Rustic

  • YouTube · Bientôt
  • X · Bientôt
  • Discord · Bientôt

© 2026 Rustic · Rustic est publié sous licence MIT OR Apache-2.0 et repose sur Horizon (MIT).

Not an official Minecraft product. Not approved by or associated with Mojang or Microsoft. (Produit non officiel, ni approuvé par Mojang ou Microsoft, ni associé à eux.)