Gestion des mondes de benchmark
Les benchmarks ont besoin d'un environnement contrôlé et reproductible. Par défaut, VoxelBench crée et détruit un monde plat jetable à chaque run, mais vous pouvez épingler un monde précis pour que chaque exécution utilise la même carte — utile pour mener des tests comparatifs dans le temps. Tout monde géré par le plugin réside sous le préfixe de dossier `voxelbench_*`. Ce préfixe est imposé partout : le plugin refusera de toucher à tout monde ne commençant pas par ce préfixe. Votre map survie est en sécurité.
Pourquoi épingler un monde ?
- Reproductibilité entre runs : les chunks sont identiques au bit près, donc la variance entre deux runs est pilotée par la charge serveur plutôt que par le terrain.
- Scénarios de test pré-construits : montez un mécanisme redstone une fois, benchmarkez son coût en tick sur la durée de vie de votre matériel.
- Runtimes hybrides : sur Mohist/Arclight, la création de monde
passe par un
ChunkGeneratorBukkit custom pour contourner l'interception duWorldType.FLATpar Forge. Un monde épinglé évite complètement ce chemin après la première création.
Commandes
| Commande | Description |
|---|---|
/bench world list | Tous les mondes voxelbench_* connus du serveur. |
/bench world show | Le monde actuellement épinglé (ou <aucun>). |
/bench world set <nom> | Épingle voxelbench_<nom> pour les runs suivants. |
/bench world unset | Retire l'épinglage ; auto-temp reprend. |
/bench world create <nom> | Crée un nouveau monde plat voxelbench_<nom>. |
/bench world delete <nom> | Décharge et supprime un monde voxelbench_<nom>. |
Permission : voxelbench.world (défaut : op).
Auto-temp vs épinglé
| Mode | Comportement |
|---|---|
| Auto-temp (défaut) | Chaque /bench start crée voxelbench_temp_<timestamp>, y exécute le run, puis le supprime. Zéro état permanent. |
| Épinglé | /bench world set réutilise le même monde à chaque run. |
| Épinglé, strict | Config benchmark.auto-temp-world: false avec target-world: "" — les runs refusent de démarrer sans monde épinglé. |
L'épinglage survit aux redémarrages. Il est persisté dans config.yml
sous benchmark.target-world.
Récupération après crash
Quand un benchmark démarre, chaque joueur en ligne est sauvegardé puis
téléporté dans le monde de benchmark. Si le serveur crash en cours de
run, au prochain démarrage le plugin scanne les joueurs piégés
(toujours dans un monde voxelbench_*) et les restaure automatiquement
à leur position sauvegardée. Aucune action manuelle nécessaire.
Persistance entre redémarrages (v1.2)
Les mondes voxelbench_<nom> créés par l'opérateur (c'est-à-dire tout
ce qui ne correspond pas au motif auto-temp voxelbench_temp_<chiffres>)
sont désormais auto-chargés à l'activation du plugin. Auparavant, sur
les runtimes hybrides, la définition du monde était perdue à chaque
redémarrage et il fallait la recréer à la main.
Les mondes auto-temp restent éphémères — le
TempWorldOrphanCleaner supprime tous les dossiers
voxelbench_temp_* orphelins trouvés au démarrage (serveur crashé en
plein run, plugin désactivé en plein test, etc.).
Intégration Multiverse-Core
Quand Multiverse-Core
est installé, VoxelBench lui délègue la création de monde. Les mondes
créés via /bench world create apparaissent dans /mv list et
respectent vos réglages Multiverse (gamemode, weather lock, etc.).
Quand Multiverse n'est pas présent, le plugin retombe sur un chemin
Bukkit WorldCreator direct. Les deux chemins produisent le même
monde plat type overworld.
Protection contre les dossiers obsolètes (v1.2)
/bench world create <nom> refuse de tourner quand un dossier
voxelbench_<nom> existe déjà sur disque depuis une session
précédente :
[VoxelBench] Le dossier de monde 'voxelbench_arena' existe déjà sur disque.
Utilisez /bench world delete arena d'abord, ou choisissez un autre nom.
Sans ce garde-fou, le plugin chargerait les anciens chunks puis superposerait des chunks plats par-dessus → un terrain mi-plat, mi-ancien. La v1.1 avait ce piège ; la v1.2 le corrige.
Récap des garde-fous
| Garde-fou | Empêche |
|---|---|
Préfixe voxelbench_* verrouillé | Les opérateurs avec voxelbench.world ne peuvent pas supprimer vos maps survie/lobby. |
| Cleaner d'orphelins auto-temp | Les dossiers voxelbench_temp_* laissés par des runs crashés sont supprimés au démarrage. |
| Refus sur dossier obsolète | /bench world create refuse de charger des chunks préexistants. |
| Sauvetage des joueurs crash-proof | Les joueurs piégés dans un monde de benchmark au redémarrage sont téléportés à leur position pré-bench. |