Système de butin d'Extractioncraft
Extractioncraft dispose d'un système de butin en couches basé sur trois concepts : les paquets de contenu référencent des tables de butin, les tables de butin référencent des pools de butin, et les pools de butin définissent les objets qui peuvent réellement être obtenus.
Vue d'ensemble
Content Package
-> chestLootTables / barrelLootTables (weighted selection)
-> Loot Table
-> lootTable entries (each has a chance to roll)
-> Loot Pool
-> eliteMobsLoot / vanillaLoot (weighted selection of one item)
Tables de butin
Les fichiers de configuration des tables de butin se trouvent dans le dossier loot_tables/. Chaque fichier définit une liste d'entrées de pools de butin, où chaque entrée a une chance indépendante de produire un objet.
| Clé | Type | Défaut | Description |
|---|---|---|---|
isEnabled | Boolean | true | Écrite dans le fichier, mais non appliquée : les tables de butin sont enregistrées et utilisables que cette valeur soit true ou non. Pour empêcher l'utilisation d'une table, retirez-la des chestLootTables / barrelLootTables du paquet de contenu et videz ses spawnPools. |
spawnPools | Liste de String | [] | Noms des pools d'apparition BetterStructures. Lorsqu'un EliteMob associé à un pool d'apparition correspondant est tué, cette table de butin est utilisée pour ses drops. La comparaison ignore la casse et un .yml final, si bien que kobold_miner_pool et Kobold_Miner_Pool.yml correspondent tous les deux. |
lootTable | Liste d'objets | [] | Chaque entrée référence un nom de fichier de pool de butin et une chance (0.0 à 1.0) |
Format d'entrée de table de butin
lootTable:
- filename: my_loot_pool.yml
chance: 0.5
- filename: another_pool.yml
chance: 0.2
Chaque entrée est lancée indépendamment. Une chance de 0.5 signifie une probabilité de 50 % que ce pool produise un drop.
Pools de butin
Les fichiers de configuration des pools de butin se trouvent dans le dossier loot_pools/. Chaque pool définit un ensemble d'objets possibles. Lorsqu'un pool est lancé, un objet est sélectionné en fonction de la probabilité pondérée.
| Clé | Type | Défaut | Description |
|---|---|---|---|
isEnabled | Boolean | true | Écrite dans le fichier, mais non appliquée : les pools de butin sont enregistrés et utilisables que cette valeur soit true ou non. Pour empêcher l'utilisation d'un pool, retirez son entrée des tables de butin qui le référencent. |
eliteMobsLoot | Liste d'objets | [] | Objets personnalisés EliteMobs qui peuvent être obtenus |
vanillaLoot | Liste d'objets | [] | Objets Minecraft vanilla qui peuvent être obtenus |
Entrée de butin EliteMobs
eliteMobsLoot:
- filename: my_elite_item.yml
weight: 1.0
- filename: another_item.yml
weight: 0.5
Le filename référence un fichier de configuration d'objet personnalisé EliteMobs. Le weight détermine la probabilité relative de drop parmi toutes les entrées du pool.
Entrée de butin vanilla
vanillaLoot:
- material: DIAMOND
weight: 1.0
- material: GOLD_INGOT
weight: 2.0
Le material est un nom d'enum Material de Bukkit. Le weight fonctionne de la même manière que pour les entrées de butin d'élite. Toutes les entrées d'élite et vanilla d'un pool sont en compétition dans une seule sélection pondérée : un pool produit donc au maximum un objet par lancer. Les objets vanilla sont toujours obtenus à l'unité. Un material non reconnu est ignoré avec un avertissement au démarrage, et un nom de fichier eliteMobsLoot qui ne correspond à aucun objet personnalisé EliteMobs génère un avertissement au moment du drop et ne produit rien.
Les poids peuvent être écrits sous forme de décimales (0.5), de nombres entiers (2) ou de chaînes entre guillemets ("1.5") ; ces trois formes sont analysées correctement. Un weight manquant ou non numérique est traité comme 0 et génère un avertissement.
Butin de conteneur (coffres et tonneaux)
Pendant un match, les coffres et tonneaux sont générés par BetterStructures au démarrage du match. Lorsqu'un joueur fait un clic droit sur un coffre ou un tonneau :
- Le conteneur vanilla ne s'ouvre jamais — l'interaction est annulée et remplacée par le flux de pillage d'Extractioncraft.
- Le joueur doit rester parfaitement immobile pendant 3 secondes. Un compte à rebours est affiché en sous-titre.
- Le moindre mouvement annule l'interaction (« Don't move while opening a container! »). Un joueur ne peut ouvrir qu'un seul conteneur à la fois.
- En cas de succès, une table de butin est sélectionnée dans la liste
chestLootTablesoubarrelLootTablesdu paquet de contenu (sélection pondérée). - Les entrées de la table de butin sélectionnée sont lancées indépendamment, et les objets obtenus tombent au sol à l'emplacement du conteneur.
- Le conteneur est détruit après le pillage (remplacé par de l'air) : chaque conteneur ne peut donc être pillé qu'une seule fois.
Les conteneurs affichent des particules de portail toutes les 10 ticks lorsqu'ils sont actifs dans un match, les rendant visibles pour les joueurs.
Les drops de conteneurs transmettent un niveau fixe de 10 à EliteMobs, quel que soit le paquet de contenu utilisé par le match. La plage de niveaux annoncée par les paquets Kobold Mines provient des mobs de la carte, et non du butin des coffres et tonneaux.
Butin de mise à mort de mob
Lorsqu'un EliteMob meurt pendant un match, le plugin lit la donnée personnalisée betterstructures:spawnpool du mob. Les mobs dépourvus de cette donnée (tout ce qui n'a pas été généré par le générateur de modules BetterStructures) ne génèrent jamais de butin Extractioncraft.
Toutes les tables de butin dont la liste spawnPools correspond au pool d'apparition du mob génèrent des drops à l'emplacement de la mort — ce n'est pas un tirage pondéré, donc lister le même pool d'apparition dans trois tables de butin vous donne trois séries de lancers indépendantes. Le niveau propre du mob est transmis à EliteMobs pour une génération d'objets adaptée au niveau.
Le niveau du mob est lui-même déterminé par BetterStructures lors de la génération de la carte : les boss proches du centre de la carte apparaissent près du niveau maximum de leur pool d'apparition, et ceux situés vers les bords près de son minimum. La bordure du monde qui rétrécit vers le centre pousse donc les joueurs vers un territoire progressivement plus difficile — et plus rémunérateur.
Comportement des objets à la sortie
- Tout joueur quittant un match, avec succès ou non, voit d'abord son inventaire lié à l'âme (via l'enchantement soulbind d'EliteMobs) : tout ce qu'il emporte lui est donc lié.
- Les joueurs qui s'extraient avec succès conservent tous leurs objets.
- Les joueurs qui échouent à s'extraire perdent tous les objets de leur inventaire lorsque
deleteItemsOnFailToExtractvauttruedansconfig.yml(la valeur par défaut). Cela couvre le départ avec/exc leave, la déconnexion et les dégâts létaux. - Rien n'est supprimé tant que le match est encore en attente ou en compte à rebours ; la règle ne s'applique qu'une fois le match lancé.